【前端容器篇】list

397 阅读2分钟

list

添加元素

push( ...items: any[]): number

  • 添加元素到末尾
function main(){
    let list = [];
    list.push(0);
    let size = list.push(1,'2',3.1);
    //list = [0,1,'2',3.1]; size = 4
}

unshift(...items: any[]): number

  • 从开头添加元素
function main(){
    let list = [];
    list.unshift(0);
    let size = list.unshift(1,'2',3.1);
    //list = [1,'2',3.1,0]; size = 4
}

删除元素

pop(): any | undefined

  • 删除最后一个元素
function main(){
    let list = [1,2,3,4];
    let end = list.pop();
    //list = [1,2,3]; end = 4
}

shift(): any | undefined

  • 删除第一个元素
function main(){
    let list = [1,2,3,4];
    let end = list.shift();
    //list = [2,3,4]; end = 1
}

splice(start: number, deleteCount?: number): any[]

  • 删除指定元素
function main(){
    let list = [1,2,3,4];
    let delList = list.splice(0,2);
    //list = [3,4]; delList = [1,2]
}

更新元素

splice(start: number, deleteCount: number, ...items: any[]): any[]

function main(){
    let list = [1,2,3,4];
    let putList = list.splice(0,1,2);
    //list = [2,2,3,4]; delList = [1]
}

查询元素

slice(start?: number, end?: number): any[]

  • 根据索引获取元素
function main(){
    let list = [1,2,3,4];
    let all = list.slice();
    let start = list.slice(1);
    let subList = list.slice(0,2);
    //all = [1,2,3,4]; start = [2,3,4]; subList = [1,2]
}

indexOf(searchElement: any, fromIndex?: number): number

  • 根据字符获取字符第一次出现的索引位置(从左到右)
function main(){
    let list = [1,2,1,2];
    let i1 = list.indexOf(2);
    let i2 = list.indexOf(2,2);
    //i1 = 1 ; i2 = 3
}

lastIndexOf(searchElement: any, fromIndex?: number): number

  • 根据字符获取字符第一次出现的索引位置(从右到左)
function main(){
    let list = [1,2,1,2];
    let i1 = list.lastIndexOf(2);
    let i2 = list.lastindexOf(2,2);
    //i1 = 3 ; i2 = 1
}

keys(): IterableIterator<number>

  • 获取索引key的集合迭代器
  • IE11 及其更早的浏览器版本不支持 keys 方法
function main(){
    let list = [1,2,3,4];
    let keys = list.keys();
    let i1 = keys.next().value;
    let i2 = keys.next().value;
    //i1 = 0 ; i2 = 1
}

includes(searchElement: any,fromIndex?: number): boolean

  • 查询集合中是否存在该元素
function main(){
    let list = [1,2,3,4];
    let isExist = list.includes(1)
    //isExist = true
    let isExist = list.includes(1,1)
    //isExist = false
}

排序

sort(compareFn?: (a: any, b: any) => number): this

  • 默认升序(无参数)
  • 升序:a-b ; 降序:b-a
  • 按 ASCII 字符进行计算排序
function main(){
    let list = [1,3,2,4];
    list.sort((a,b)=>b-a);
    //list = [4,3,2,1]
    let charList = ['b','a','c'];
    charList.sort();
    //charList = ['a','b','c']
}

过滤

filter(predicate: (value: any, index?: number, array?: any[]) => boolean, thisArg?: any): any[]

  • predicate:过滤函数
  • thisArg: this 关键字可以在回调函数中引用的对象,如果省略 thisArg,则使用 undefined 作为 this 值
function main(){
    let list = [1,2,3,4];
    let filterList =  list.filter((data,index,arr)=>{
    //arr = [1,2,3,4]
    return index!=0
    })
    //filter = [2,3,4]
}

拼接

join(separator?: string): string

  • 拼接字符串
function main(){
    let list = [1,2,3,4];
    let str = list.join(";");
    //str="1;2;3;4"
}

concat(...items: ConcatArray[]): any[]

  • 拼接数组
function main(){
    let list1 = [1,2];
    let list2 = [3,4];
    //第一种方式
    let list = list1.concat(list2);
    //第二种方式
    let list = [...list1,...list2];
    //list=[1,2,3,4]
}

逆反元素

reverse(): any[]

function main(){
    let list = [1,2,3,4];
    let newList = list.reverse();
    //newList = [4,3,2,1]
}

二维数组转一维数组

reduce(): any[]

function main(){
    let list = [[1,2],[3,4]];
    let newList = list.reverse((a,b)=>a.concat(b));
    //newList = [1,2,3,4]
}