0%

JavaScript 常用数组方法整理

1. arr.push()

  • 释义:在数组的末尾添加一个或多个元素。
  • 返回值:返回新的数组的长度。
  • 语法:arr.push(元素1,元素2,...,元素x)
  • 参数:元素 1 必填,元素 2 和元素 x 可选。
  • 说明:会改变原数组,并不会返回一个新数组。

2. arr.pop()

  • 释义:删除数组末尾最后一个元素。
  • 返回值:返回被删除的元素。
  • 语法:arr.pop()
  • 参数:无。
  • 说明:改变原数组,将数组长度减一。
  • 注意:如果数组为空,则不改变原数组,会返回 undefined。

3. arr.unshift()

  • 释义:从数组的开头添加一个或多个元素。
  • 返回值:返回新的数组长度。
  • 语法:arr.unshift(元素1,元素2,...,元素x)
  • 参数:元素 1 必填,元素 2 和元素 x 可选。
  • 说明:直接修改原数组,不创建新的数组。
  • 注意:unshift() 方法无法在 Internet Explorer 中正确地工作!(待确认)

4. arr.shift()

  • 释义:从数组的开始删除第一个元素。
  • 返回值:返回删除的元素。
  • 语法:arr.shift()
  • 参数:无。
  • 说明:改变原数组,将数组长度减一。
  • 注意:如果数组为空,则不改变原数组,会返回 undefined。

5.arr.reverse()

  • 释义:翻转数组。
  • 返回值:返回处理好的数组。
  • 语法:arr.reverse()
  • 参数:无。
  • 说明:直接修改原数组。

6.arr.sort()

  • 释义:数组排序
  • 返回值:返回数组的引用。(待确认)
  • 语法:arr.sort(sotrFn)
  • 参数:该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
    • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    • 若 a 等于 b,则返回 0。
    • 若 a 大于 b,则返回一个大于 0 的值。
  • 说明:直接修改原数组。
  • 示例
1
2
arr.sort(function(x,y){return x-y});// 升序
arr.sort(function(x,y){return y-x});// 降序

7.arr.splice()

  • 释义:可实现对数组的删除、替换、添加操作。
  • 返回值:返回被删除的数组。如果有的话。
  • 语法:arr.splice(index,howmany,item1,.....,itemX)
  • 参数:
    • index:必填,删除,替换,添加操作的数组下标位置。使用负数的话,就从数组结尾算起。
    • howmany: 必填:要删除的数组元素个数,为 0 则不删除。
    • item1,…itemX: 可选,添加的元素。
  • 说明:会修改原数组。
  • 示例:
1
2
3
4
5
6
7
8
var arr = new arr("a","b","c","d");
// 删除数组中的"b"
// arr.splice(1, 1);
// 将数组中的"b" 替换成 "e"
// arr.splice(1, 1, "e");
// 在"b"的后面添加x, y
arr.splice(2, 0, "x", "y");//从下标位置开始添加
console.log(arr);

8.arr.slice()

  • 释义:从数组中截取元素。
  • 返回值:将截取出来的数组元素放在一个新数组中返回。
  • 语法:arr.slice(start,end)
  • 参数:
    • start: 必须,起始索引,从 0 开始。如果为负数,-1 为最后一个元素,-2 为倒数第二个元素。
    • end: 可选,结束索引,从 1 开始。截取不包括 end。如果不传,则截取到数组末尾。如果为负数,则从数组末尾算起。
  • 说明:不改变原数组。

9.arr.indexOf()

  • 释义:从前往后查找数组中的元素。
  • 返回值:找到第一个就返回元素下标,不再查找。没找到返回 -1。
  • 语法:arr.indexOf(元素,查找位置)
  • 参数:
    • 元素:必选,要查找的元素。
    • 查找位置:可选,默认值为 0。如果索引大于或等于数组长度,则返回 -1。为负数时,依旧是从前往后查找。-1 代表最后一个元素,-2 为倒数第二个,以此类推。当索引小于 0 时,默认查询整个数组。

10.arr.lastIndexOf()

  • 释义:从后往前查找数组中的元素。
  • 返回值:找到第一个就返回元素下标,不再查找。没找到返回 -1。
    • 语法:arr.lastIndexOf(元素,查找位置)
  • 参数:
    • 元素:必选,要查找的元素。
    • 查找位置:可选,默认值为数组最后一项的索引,即数组长度-1。如果索引大于或等于数组长度,则查询整个数组。为负数时,依旧是从后往前查找。“如果为负值,将其视为从数组末尾向前的偏移。”。当索引的绝对值大于数组长度时,返回 -1。

11.arr.concat()

  • 释义:将多个数组拼接成一个数组。
  • 返回值:返回拼接好的数组。
  • 语法:arrayObj.concat(arr1,arr2,...,arrX)
  • 参数:
    • arrX: 必填,需要被添加进调用了 concat 方法的数组 arrayObj 中的项目。可以是具体的值,也可以是数组,当时数组时,是把数组的值添加进去 arrayObj。而不是直接添加数组。
  • 说明:不会改变原数组。

12.arr.join()

  • 释义:将数组中的元素以某个字符进行拼接。
  • 返回值:返回拼接好的字符串。
  • 语法:arr.join(连接字符)
  • 参数:
    • 连接字符:默认为逗号。
  • 说明:不会改变原数组。
  • 注意:如果数组元素为 undefined 或 null,则被视为空字符串。
  • 示例:
1
2
var arr=[undefined,undefined,null,null];
console.log(arr.join("|")); // |||

13. arr.forEach()

  • 释义:遍历数组。
  • 返回值:undefined
  • 语法:arr.forEach(function(value,index,array){},thisArg)
  • 参数:
    • function:
      • value:当前循环到的元素
      • index:可选,当前元素的索引。
      • array:可选,被遍历的原数组。
    • thisArg: 如果 thisArg 参数有值,则每次 callback 函数被调用时,this 都会指向 thisArg 参数。如果省略了 thisArg 参数,或者其值为 null 或 undefined,this 则指向全局对象。
  • 说明:forEach 方法不会直接改变原数组,但可能被 forEach 方法的 callback 改变。

14.arr.map()

  • 释义:遍历数组。
  • 返回值:进行遍历操作后的新的数组。
  • 语法

    var new_array = arr.map(function callback(currentValue[, index[, array]]) {
    // Return element for new_array
    }[, thisArg])

  • 参数:同 forEach
  • 说明:map 方法不会直接改变原数组,但可能被 map 方法的 callback 改变。

15.arr.filter()

  • 释义:数组过滤。
  • 返回值:返回过滤好的数组,没有符合的则返回空数组。
  • 语法:

    var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])

  • 参数:
    • callcack: 过滤规则的回调函数
      • element: 当前元素。
      • index: 可选,当前元素的索引。
      • array: 可选:调用方法的数组。
    • thisArg: 可选,执行 callback 时,用于 this 的值。如果为 filter 提供一个 thisArg 参数,则它会被作为 callback 被调用时的 this 值。否则,callback 的 this 值在非严格模式下将是全局对象,严格模式下为 undefined。
  • 说明:不会改变原数组。

16.arr.findIndex()

  • 释义:根据回调函数查找索引
  • 返回值:找到匹配元素后,返回索引,找到一个就停止查找。没找到返回 -1。
  • 语法:

    arr.findIndex(callback[, thisArg])

  • 参数:同上。
  • 示例:
1
2
3
var arr = ['zs', 'ls', 'ww']
var index = arr.findIndex(item => item === 'zs')
console.log(index)

17. arr.every()

  • 释义:测试数组的所有元素是否都通过了指定函数的测试。
  • 返回值:和 && (且)类似,都符合条件返回 true, 只要有一个不符合条件便返回 false。
  • 语法:arr.every(callback[,thisArg]);
  • 参数:同上。
  • 说明:不会改变原数组。
  • 注意:空数组也是返回 true(空数组中所有元素都符合给定的条件)。

18. arr.some()

和 every() 用法一样,只是采用 || (或)的运算规则。

19. Array.isArray()

  • 释义:用于确定传递进来的一个元素是不是数组。
  • 返回值:是数组则为 true, 否则为 false。
  • 语法:Array.isArray(obj)
  • 参数:obj:需要检测的元素。
  • 注意:直接由 Array 调用。