Array对象方法

在实际的 JavaScript 代码编写中,经常会遇到处理数组的需求,因此在这里罗列一下原生的数组操作方法,常用的方法在前。

头尾增删

添加

  • push() 向数组的末尾添加一个或更多元素,并返回新的长度。
  • unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
1
2
3
var arr = [1, 2, 4, 5]
console.log(arr.push('2')) // 5
console.log(arr) // [1, 2, 4, 5, "2"]

删除

  • pop() 删除并返回数组的最后一个元素。
  • shift() 删除并返回数组的第一个元素。
1
2
3
var arr = [1, 2, 4, 5]
console.log(arr.pop()) // 5
console.log(arr) // [1,2,4]

局部增删

  • slice() 选取数组的的一部分,并返回一个新数组。不改变原数组。
  • splice() 从数组中删除、插入、替换元素,并返回删除的数组。改变原数组。

slice()

语法 array.slice(start, end)
返回从 start 到 end (** 不包括该元素 **)的数组。

参数 描述
start 可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

splice()

这是一个很强大的方法, slice() 能实现的功能它也可以实现,最大的区别是它还可以替换元素,另外这个方法是改变原数组的。
语法 array.splice(index,howmany,item1,.....,itemX)

参数 描述
index 必需。规定从何处开始操作,必须是数字。
howmany 必需。规定应该删除多少元素,必须是数字,可以是 “0”。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
item1, …, itemX 可选。要添加到数组的新元素。

排序数组

  • reverse() 反转数组的元素顺序。改变原数组。
  • sort() 对数组的元素进行排序。改变原数组。

这两个方法在本博客JS重排方法一文中有更详细的解释。

遍历数组

  • every() 检测数值元素的每个元素是否都符合条件。
  • some() 检测数组元素中是否有元素符合指定条件。
  • filter() 检测数值元素,并返回符合条件所有元素的数组。
  • map() 通过指定函数处理数组的每个元素,并返回处理后的数组。

这四个方法在本博客JS数组迭代一文中有更详细的解释。

连接数组

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法 array1.concat(array2,array3,...,arrayX)

分隔数组

join() 方法用于把数组中的所有元素转换一个字符串。元素是通过指定的分隔符(默认为逗号)进行分隔的。不改变原数组。
语法 array.join(separator)

检索数组

  • indexOf() 从头到尾搜索,并返回第一个指定项的索引。
  • lastIndexOf() 从尾到头搜索,并返回第一个指定项的索引。
1
2
array.indexOf(item,start)
array.lastIndexOf(item,start)

start 是可选参数,规定在数组中开始检索的位置。

类型转换

  • toString() 把数组转换为字符串,并返回结果。不改变原数组。
  • valueOf() 返回数组对象的原始值。不改变原数组。

array.toString() 等价于 array.join()

1
2
3
var arr = [1, 2, 4, 5]
console.log(arr.valueOf()) // [1, 2, 4, 5]
console.log(arr.toString()) // 1,2,4,5