ES6新增的数组API

579 阅读1分钟

静态方法

  • Array.of(...args): 使用指定的数组项创建一个新数组
    const arr = Array.of(1,2)
    console.log(arr); // [1,2]
    
    // 和 new Array()有什么区别?
    // 当 new Array(1), 代表数组长度为1,而不是[1]
    
  • Array.from(arg): 通过给定的类数组 或 可迭代对象 创建一个新的数组。
    // 类数组
    const divs = document.querySelectorAll('div');
    const arr = Array.from(divs);
    

实例方法

  • find(callback): 用于查找满足条件的第一个元素
  • findIndex(callback):用于查找满足条件的第一个元素的下标
    const arr = [{
        name: "a",
        id: 1
    },
    {
        name: "b",
        id: 2
    },
    {
        name: "c",
        id: 3
    },
    ]
    
    //找到id为2的对象
    const result = arr.find(item => item.id === 2)
    
    // 和indexOf的区别
    // indexOf只能传元素,findIndex能传对象
    const resultIndex = arr.findIndex(item => item.id === 2)
    console.log(result, resultIndex);
    //{name: "b", id: 2}  1
    
  • fill(data):用指定的数据填充满数组所有的内容
    // 创建了一个长度为100的数组,数组的每一项是"abc"
    const arr = new Array(100);
    arr.fill("abc"); 
    
  • copyWithin(target, start?, end?): 在数组内部完成复制
    const arr = [1, 2, 3, 4, 5, 6];
    //从下标2开始,改变数组的数据,数据来自于下标0位置开始
    arr.copyWithin(2); // [1, 2, 1, 2, 3, 4]
    
    arr.copyWithin(2, 1); // [1, 2, 2, 3, 4, 5]
    
    arr.copyWithin(2, 1, 3); // [1, 2, 2, 3, 5, 6]
    console.log(arr) 
    
  • includes(data):判断数组中是否包含某个值,使用Object.is匹配
    // 和indexOf的区别?
    // indexOf从语义上不好阅读 
    const arr = [45, 21, 356, 66 , 6, NaN, 723, 54];
    
    console.log(arr.indexOf(66) >= 0)
    console.log(arr.includes(NaN));