Array各种方法总结,分类汇总

数组方法

静态方法

  1. Array.from():从类数组或者可迭代对象中创建一个新的数组实例
    Array.from([1, 2, 3], x => x + x) //[2,4,6]
    Array.from('foo') //['f', 'o', 'o']
  2. Array.isArray():用来判断某个变量是否是一个数组对象,返回true/false
  3. Array.of():根据参数创建一个新的数组实例
    Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为 7 的空数组
     Array.of(7);       // [7]
     Array.of(1, 2, 3); // [1, 2, 3]
    
     Array(7);          // [ , , , , , , ]
     Array(1, 2, 3);    // [1, 2, 3]
    

实例方法:

  1. Array.at(Index) 接收一个整数值并返回该索引的项目

  2. Array.concat(arr2) 合并两个或多个数组,返回新的数组(深拷贝)

  3. Array.copyWithin(target, start, end) 复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
    target:索引,赋值序列到原数组的该位置,负数从末尾计算
    start:开始赋值元素的起始索引
    end:结束位置的索引,不包括这个位置

    [1, 2, 3, 4, 5].copyWithin(-2)     // [1, 2, 3, 1, 2]
    [1, 2, 3, 4, 5].copyWithin(0, 3)   // [4, 5, 3, 4, 5]
    [1, 2, 3, 4, 5].copyWithin(0, 3, 4)// [4, 2, 3, 4, 5]
    
  4. Array.entries() 返回一个新的Array Iterator迭代器,其上有一个.next 方法,可用于遍历迭代器取得原数组的 [key, value],done属性可判断迭代器时候到末尾

    var arr = ["a", "b", "c"];
    var iterator = arr.entries();
    console.log(iterator.next());
    /*{
        value: [0, 'a'],
        done:false
      }
    */
    
    var arr = ["a", "b", "c"];
    var iterator = arr.entries();
    for (let e of iterator) {
        console.log(e);
    }
    // [0, "a"]
    // [1, "b"]
    // [2, "c"]
    
    
  5. Array.every() 测试一个数组内所有元素能否通过某个函数的测试,返回布尔值

  6. Array.fill(value,start,end) 某个固定值填充数组内某一段的全部元素,不包括终止索引,改变本身

  7. Array.filter(Fnc(element,index,arr)) 返回一个新数组,包含原数组中能通过所提供函数的所有元素
    Fnc:处理函数
    element:正在处理的元素
    index(可选):正在处理元素的索引
    arr(可选):原数组

  8. Array.find(Fnc(element,index,arr)) 返回数组中满足测试函数的第一个元素的值,无则返回 undefined

  9. Array.findIndex(Fnc(element,index,arr)) 返回数组中满足测试函数的第一个元素的值,无则返回 -1

  10. Array.flat(Index) 按照一个可指定深度的递归遍历数组,将所有元素包括子数组中的元素合并为新数组并返回
    Array.flat(Infinity)可展开任意深度的嵌套数组

    const arr1 = [0, 1, 2, [3, 4]];
    console.log(arr1.flat())// [0, 1, 2, 3, 4]
    const arr2 = [0, 1, 2, [[[3, 4]]]];
    console.log(arr2.flat(3))//  [0, 1, 2, [3, 4]]
    

    flat() 方法会移除数组中的空项

  11. Array.flatMap(Func(val,index,arr)) 使用映射函数映射每个元素,然后将结果压缩成一个新数组,结构深度为1。 flatMap 通常在合并成一种方法的效率稍微高一些。

  12. Array.forEach(Func(element,index,arr)) 对数组的每个元素执行一次给定的函数,不会改变原数组,
    注意:除了抛出异常以外,没有办法中止或跳出 forEach循环。

    能提前终止的循环:for循环 for…of for…in Array.every() Array.some() Array.find() Array.findIndex()

  13. Array.includes(value) 判断一个数组是否包含某个指定的值,返回true/false

  14. Array.indexOf(value) 返回数组中找到第一个给定值的索引,不存在返回-1

  15. Array.join(str) 将数组内所有元素用某个字符串连在一起并返回

    const elements = ['Fire', 'Air', 'Water'];
    console.log(elements.join());//Fire,Air,Water
    console.log(elements.join(''));// FireAirWater
    console.log(elements.join('-'));//Fire-Air-Water
    
  16. Array.keys() 返回一个包含数组中每个索引键的 Array Iterator对象

  17. Array.map(Func(element,index,arr)) 返回一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。与Array.forEach类似,map方法会返回被某个函数处理过的数组,forEach不会。

  18. Array.pop() 从数组中删除最后一个元素并返回该元素的值,若数组为空则undefined,改变原数组

  19. Array.push() 将一个或多个元素添加到数组的末尾,并返回数组的新长度

  20. Array.reduce(Func(preVal, curVal, curIndex,arr),initialVal) 对数组中的每个元素按序执行函数操作,每次函数操作会将上次函数操作的结果当作参数传入,最后将其汇总的结果返回
    Func: 一个reducer函数,包含四个参数
    preVal: 上次函数处理的返回值,第一次调用,若传入了初始值initialVal则调用这个,若没有则是数组中索引为0的元素
    curVal:数组中正在处理的元素
    curIndex:数组中正在处理元素的索引
    arr:用于遍历的数组

    如果数组仅有一个元素(无论位置如何)并且没有提供初始值 initialValue,或者有提供 initialValue 但是数组为空,那么此唯一值将被返回且 callbackfn 不会被执行。

  21. Array.reverse() 将数组中元素的位置颠倒,改变原数组

  22. Array.shift() 从数组中删除第一个元素并返回该元素的值,若数组为空则undefined,改变原数组

  23. Array.slice(begin, end) 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝
    slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个新数组。

    function list() {
        return Array.prototype.slice.call(arguments);
    }
    var list1 = list(1, 2, 3); // [1, 2, 3]
    
  24. Array.some(Func(element,index,arr)) 测试数组中是否至少有一个元素通过了某函数测试,若有则立即返回true,数组中若无则返回false

  25. Array.sort() 原地算法对数组进行排序并返回数组,默认排序顺序是在将元素转换为字符串,比较它们的 UTF-16 代码单元值

  26. Array.splice(start,count,item) 通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
    start:指定修改的起始位置
    count:表示要移除元素的个数
    item:要添加进数组的元素,若不指定则指删除

  27. Array.toString() 返回一个字符串表示指定的数组及其元素

    const array1 = [1, 2, 'a', '1a'];
    console.log(array1.toString());// "1,2,a,1a"
    
  28. Array.unshift() 将一个或多个元素添加到数组的开头,返回新的长度

  29. Array.values() 返回一个新的Array Iterator对象包含数组每个索引的值

Array中常用的遍历所有元素的方法

  1. Array.filter(Fnc(element,index,arr)) 返回一个新数组,包含原数组中能通过所提供函数的所有元素
  2. Array.flatMap(Func(val,index,arr)) 使用映射函数映射每个元素,然后将结果压缩成一个新数组,结构深度为1。 flatMap 通常在合并成一种方法的效率稍微高一些。
  3. Array.forEach(Func(element,index,arr)) 对数组的每个元素执行一次给定的函数,不会改变原数组,
    注意:除了抛出异常以外,没有办法中止或跳出 forEach循环。
    能提前终止的循环:for循环 for…of for…in Array.every() Array.some() Array.find() Array.findIndex()
  4. Array.map(Func(element,index,arr)) 与Array.forEach类似,map方法会返回被某个函数处理过的数组,forEach不会。
  5. Array.reduce(Func(preVal, curVal, curIndex,arr),initialVal) 对数组中的每个元素按序执行函数操作,每次函数操作会将上次函数操作的结果当作参数传入,最后将其汇总的结果返回

Array中返回新数组的方法

  1. Array.from():从类数组或者可迭代对象中创建一个新的数组实例
  2. Array.of():根据参数创建一个新的数组实例,为单个整数是返回一个整数作为长度的空数组,为字符时直接返回包含这个元素的数组
  3. Array.concat(arr2) 合并两个或多个数组,返回新的数组(深拷贝)
  4. Array.slice(begin, end) 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝
  5. Array.copyWithin(target, start, end) 复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
  6. Array.flat(Index) 按照一个可指定深度的递归遍历数组,将所有元素包括子数组中的元素合并为新数组并返回
  7. Array.flatMap(Func(val,index,arr)) 使用映射函数映射每个元素,然后将结果压缩成一个新数组,结构深度为1。
  8. Array.join(str) 将数组内所有元素用某个字符串连在一起并返回
  9. Array.map(Func(element,index,arr)) 返回一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。与Array.forEach类似,map方法会返回被某个函数处理过的数组,forEach不会。

Array中改变数组本身的方法

  1. Array.copyWithin(target, start, end) 复制数组的一部分到同一数组中的另一个位置,并返回它,会改变数组元素,不会改变原数组的长度。
  2. Array.splice(start,count,item) 通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
  3. Array.pop() 从数组中删除最后一个元素并返回该元素的值,若数组为空则undefined,改变原数组
  4. Array.push() 将一个或多个元素添加到数组的末尾,并返回数组的新长度
  5. Array.unshift() 将一个或多个元素添加到数组的开头,返回新的长度
  6. Array.reverse() 将数组中元素的位置颠倒,改变原数组
  7. Array.shift() 从数组中删除第一个元素并返回该元素的值,若数组为空则undefined,改变原数组
  8. Array.sort() 原地算法对数组进行排序并返回数组,默认排序顺序是在将元素转换为字符串,比较它们的 UTF-16 代码单元值
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值