JavaScript 数组方法总结

96 阅读4分钟
  1. 创建方式:

    • Array构造函数

    • 字面量

    • Array创建数组的静态方法

      • from: Array.from(类数组对象,映射函数(选),this(选))

        ​ --参数1: 类数组对象,即任何可以迭代的结构,或者一个length 属性和可索引元素的结构

        ​ --参数2: 可选的映射函数,可直接增强新数组的值

        ​ -- 参数3: 用于指定映射函数的this的值

        //eg
        Array.from('Matt');//['M','a','t','t'];
        //对现有的数组执行浅拷贝
        const a1=[1,2,3,4];
        const a2 = Array.from(a1);//a2 = [1,2,3,4];
        // 带有length属性的对象
        const obj = {
          0:1,
          1:2,
          length:2
        }
        Array.from(obj);//[1,2]
        
        // 第二个参数
        const a2 = Array.from(a1,function(x){return x*this.exponent},{exponent:2}); // a2=[2,4,6,8]
        
        
      • of: Array.of(需要转换成数组的参数) 可以把一组参数转为数组,用于替代es6之前常用Array.prototype.slice.call(arguments)将参数转为数组的笨拙方式

        // eg
        Array.of(1,2,3,4) //[1,2,3,4]
        
  2. 常用方法:

    2.1 改变原数组

    • splice: splice(删除的开始索引,删除的个数,...添加的数据) --返回被删除的数组或者[]

    • shift: shift() 头部弹出 --返回弹出的数据

    • unshift: unshift(插入的数据) 头部插入 --返回插入后数组的长度

    • pop: pop() 尾部弹出 --返回弹出的数据

    • push:push(插入的数据) --返回插入后数组的长度

    • reverse: reverse() 将数组反向排列 --返回调用方法的数组的引用

    • sort:sort(callback) 默认将数组根据字符串的顺序排序,可传入参数进行变更排序方式。--返回调用方法的数组的引用

    • fill: fill(值, 开始索引(选),结束索引(选)) 向已有的数组中插入全部或部分相同的值 ,

      ​ 负索引从数组末尾开始计算,可以换成负索引+数组长度 = 真正的索引,

      ​ ---返回调用方法的数组的引用

    • copyWithin: copyWithin(插入索引的位置,复制开始的索引(选),复制结束的索引(选))

      ​ 按照指定的范围浅复制数组中的部分内容,然后插入到指定索引开始的位置

      ​ ---返回调用方法的数组的引用

    2.2 不改变原数组

    • slice: arr.slice(开始索引,结束索引) 截取数组某段 --返回截取的数据

    • concat:arr.concat(arr2) 拼接数组 --返回拼接后得到的新数组

    • indexOf: indexOf(查找的元素,查找的开始索引(选填)) 从左到右依次查找--返回查找的索引 或者-1

    • lastIndexOf: lastIndexOf(查找的元素,查找的开始索引(选填)) 从右到左依次查找 --返回查找的索引 或者-1

    • Includes: includes(查找的元素,查找的开始索引(选填)). 从左到右依次查找--返回布尔值

    • toString: toString(); 返回由数组中每个值的等效字符串拼接成的以逗号分隔的字符串

    • valueOf:valueOf();返回数组本身

    • toLocalString:toLocalString()返回由数组中每个值的等效字符串拼接成的以逗号分隔的字符串

    • join: join(指定连接符);返回由数组中每个值的等效字符串拼接成的以指定符号分隔的字符串

    • flat: flat(深度(选,默认1)); 按照指定深度(Infinity)遍历数组,并将所有遍历到的元素或者子元素合并为一个新数组并返回,(注意: flat方法会移除数组中的空项)

    • flatMap: flatmap(callback(currentValue [, index [, array]]),thisArg);

      ​ 使用映射函数映射每个元素,然后将结果压缩成一个新数组,并返回新数组

    2.3 迭代方法(对数组每一项[]运行传入函数, 不包括从数组中删除或者从未被赋值的元素)

    • filter:返回 由函数返回true的项组成的数组

    • some:如果执行的函数有一项返回true,则返回true

    • every:如果每一项函数都返回true,则返回true

    • map:返回由每次函数调用的结果构成的数组

    • forEach:无返回值

    2.4 迭代器方法:用于检索数组内容

    - keys: Array.keys() 返回数组索引的迭代器
    - values:Array.values() 返回数组元素的迭代器
    - entries: Array.entries() 返回索引/值对的迭代器
    

    2.5 归并方法

    • reduce:

      • reduce(callback(accumulator,currentValue[, currentIndex[, array]])[,initialValue]);

        accumulator: 累加器,上一次回调时返回的累计值

        currentValue: 当前的值

        currentIndex:当前索引

        array:调用reduce的数组

        initialValue: 第一次调用函数的第一个参数的值,如果没有,则使用数组第一个元素,若数组为空,则报错

    • reduceRight:同上,只是reduce是从左到右执行,reduceRight是从右到左执行