js中数组常用方法

245 阅读6分钟

1. push()方法

  • 作用:在数组的尾部追加数组元素
  • 格式:arr.push(value1, value2, value3...)
  • 注意:
    • 返回值是修改后数组的长度
    • 原数组被改变

2. pop()方法

  • 作用:删除数组尾部的数组元素(一次只能删除一个)
  • 格式:arr.pop(value1)
  • 注意:
    • 返回值是被删除的数组元素
    • 原数组被改变

3. unshift()方法

  • 作用:在数组的头部添加元素
  • 格式:arr.unshift(value1, value2, value3...)
  • 注意:
    • 返回值是修改后数组的长度
    • 原数组被改变

4. shift()方法

  • 作用:删除数组头部的元素(一次只能删除一个)
  • 格式:arr.shift(value1)
  • 注意:
    • 返回值是被删除的数组元素
    • 原数组被改变

5. concat()方法

  • 作用:实现两个或多个数组的拼接
  • 格式:arr.concat(arr2,arr3...)
  • 注意:
    • 返回值是拼接后的新的数组
    • 原数组不受影响
    • concat方法的参数可以是一个数组,也可以是数值,也可以是多个数组,中间用逗号分隔

6. join()方法

  • 作用:将数组的每个元素以指定的字符连接形成新字符串返回
  • 格式:arr.join(分割符)
  • 注意:
    • 返回值是数组元素拼接成的字符串
    • 参数可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符
    • 原数组不受影响

7. slice()方法

  • 作用:从已有的数组中返回选定的元素。
  • 格式:arr.slice(begin,end); begin表示开始位置的下标,end表示结束位置的下标
  • 注意:
    • 返回值为截取出来的新的数组
    • 原数组不受影响
    • 在截取时包含begin,但是不包含end,即含头不含尾
    • 如果省略end,那么表示从begin一直截取到最后
    • 如果begin和end同时省略,那么表示复制数组(生成一个独立的新的数组)
    • 参数可以是负数,如果是负数,那么-1表示数组中的最后一个元素
    • 如果第二个参数,即end的值大于等于数组的长度,那么表示从begin一直截取到数组的最后

8. splice()方法

  • 作用:对数组进行增、删、改操作
  • 格式:arr.splice(index,howmany,item1,.....,itemX);
参数描述
index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX可选。向数组添加的新项目。
  • 注意:
    • 增的格式:arr.splice(下标,0,要插入的值);返回值为一个空数组;
    • 删的格式:arr.splice(下标,个数);返回值为被删除的数组元素所形成的新的数组,注意delete删除的元素的值,而splice删除的是值和空间;
    • 改的格式:arr.splice(下标,个数,新的值);返回值为被修改的元素所形成的新的数组

9. toString()方法

  • 作用:数组转换为字符串,并返回结果
  • 格式:arr.toString();
  • 注意:
    • 原数组不受影响
    • 数组中的元素之间用逗号分隔。

10. reverse()方法

  • 作用:颠倒数组中元素的顺序
  • 格式:arr.reverse();
  • 注意:
    • 原数组被改变
    • 数组中的元素之间用逗号分隔。

11. sort()方法

  • 作用:对数组的元素进行排序
  • 格式:arr.sort(sortby); 参数可选。规定排序顺序。必须是函数。
  • 注意:
    • 函数的返回值为原数组
    • 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    • 升序: arr.sort(function(a, b) { return a – b; });
    • 降序: arr.sort(function(a, b) { return b – a; });

12. includes()方法

  • 作用:判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
  • 格式:arr.includes(value);
  • 注意:
    • 原数组不受影响

13. find()方法

  • 作用:返回满足提供的测试函数的数组中第一个元素的值
var num = [1, 30, 39, 29, 10, 13];
var val = num.find(myFunc);

function myFunc(element) {
return element >= 18;
}
  • 注意:
    • 原数组不受影响
    • 为数组中的每个元素都调用一次函数执行:当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。如果没有符合条件的元素返回 undefined
    • find() 对于空数组,函数是不会执行的。

14. every()方法

  • 作用:检测数组所有元素是否都符合指定条件(通过函数提供)。
var num = [1, 30, 39, 29, 10, 13];
var val = num.every(myFunc);

function myFunc(element) {
return element >= 18;
}
  • 注意:
    • 原数组不受影响
    • 指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。
    • 不会对空数组进行检测

15. some()方法

  • 作用:检测数组中的元素是否满足指定条件(函数提供)。
var num = [1, 30, 39, 29, 10, 13];
var val = num.every(myFunc);

function myFunc(element) {
return element >= 18;
}
  • 注意:
    • 原数组不受影响
    • 指定函数检测数组中的所有元素:如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。
    • 不会对空数组进行检测

16. forEach()方法

  • 作用:对数组进行遍历循环,对数组中的每一项运行给定函数
  • arr.forEach(function(item,index,items){})
    • 参数1:遍历的数组内容item
    • 参数2:对应的数组索引 index
    • 参数3:数组本身items
  • 注意:
    • 没有返回值
    • 不会对空数组进行检测

17. map()方法

  • 作用:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值
  • arr.map(function(item,index,items){})
    • 参数1:遍历的数组内容item
    • 参数2:对应的数组索引 index
    • 参数3:数组本身items
  • 注意:
    • 原数组不受影响
    • 不会对空数组进行检测

18. filter()方法

  • 作用:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
var num = [1, 30, 39, 29, 10, 13];
var val = num.filter(myFunc);

function myFunc(element) {
return element >= 18;
}
  • 注意:
    • 原数组不受影响
    • 不会对空数组进行检测

19. reduce()方法

  • 作用:接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
  • 格式: arr.reduce(callback,[initialValue])
    • callback (执行数组中每个值的函数,包含四个参数)
      • 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
      • 2、currentValue (数组中当前被处理的元素)
      • 3、index (当前元素在数组中的索引)
      • 4、array (调用 reduce 的数组)
    • initialValue (作为第一次调用 callback 的第一个参数。)
  • 实例
var arr = [1, 2, 3, 4];
var sum = arr.reduce(function(prev, cur, index, arr) {
    console.log(prev, cur, index);
    return prev + cur;
})
console.log(arr, sum);
// 1 2 1
// 3 3 2
// 6 4 3
// [1, 2, 3, 4] 10
  • 注意:
    • 原数组不受影响
    • 作为一个高阶函数,用于函数的 compose。
    • 不会对空数组进行检测