JS中数组方法汇总
废话不多说,直接进入主题!
创建数组
字面量
数组字面量是平时用得最多的,最简单的创建方式。
1 | let arr1 = [] |
构造函数
利用构造函数创建数组,参数类型不同,返回的结果也不同。
1 | let arr1 = new Array() |
Array.from()
Array.from()
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
返回一个新的数组实例。
1 | let arr1 = Array.from('LqZww') |
Array.of
Array.of()
方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
此方法解决了利用构造函数创建数组的缺陷。
Array.of(5)
会创建一个具有单个元素 5 的数组,而 Array(5)
会创建一个长度为 5 的空数组。
1 | let arr1 = Array.of() |
检测数组
Array.isArray()
Array.isArray()
用于确定传递的值是否是一个 Array。
1 | let arr = [1, 2, 3] |
注意:当检测 Array 实例时, Array.isArray
优于 instanceof
,因为 Array.isArray
能检测 iframes。
数组方法
不改变原数组
concat()
concat()
方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
1 | let arr1 = [1, 2, 3] |
join()
join()
方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
1 | let arr = [1, 2, 3] |
slice()
slice()
方法返回一个新的被提取元素的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括 end)。原始数组不会被改变。
1 | let arr = [1, 2, 3] |
indexOf()
indexOf()
方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
1 | let arr = [1, 2, 3] |
lastIndexOf()
lastIndexOf()
方法返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找。
1 | let arr = [1, 2, 3, 1] |
toString()
toString()
返回一个字符串,表示指定的数组及其元素。
1 | let arr = [1, 2, 3] |
改变原数组
pop()
pop()
方法从数组中删除最后一个元素,并返回被删除元素的值。此方法更改数组的长度。该方法会改变原数组。
1 | let arr = [1, 2, 3] |
push()
push()
方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。该方法会改变原数组。
1 | let arr = [1, 2, 3] |
shift()
shift()
方法从数组中删除第一个元素,并返回该被删除元素的值。此方法更改数组的长度。该方法会改变原数组。
1 | let arr = [1, 2, 3] |
unshift()
unshift()
方法将一个或多个元素添加到数组的开头,并返回该数组的新长度。该方法会改变原数组。
1 | let arr = [1, 2, 3] |
reverse()
reverse()
方法将数组中元素的位置颠倒,并返回该数组。该方法会改变原数组。
1 | let arr = [1, 2, 3] |
sort()
sort()
方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的。该方法会改变原数组。
1 | let arr = [2, 1, 4, 3] |
1 | let arr = [2, 1, 4, 3] |
1 | let arr = [2, 1, 4, 3] |
splice()
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
1 | // 删除元素 |
1 | // 删除所有元素 |
1 | // 删除并添加元素 |
遍历
forEach()
forEach()
方法对数组的每个元素执行一次给定的函数。返回 undefined。
1 | let arr = [2, 1, 4, 3] |
map()
map()
方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
1 | let arr = [2, 1, 4, 3] |
every()
every()
方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。该方法不改变原数组。
1 | let arr = [2, 1, 4, 3] |
some()
some()
方法测试数组中是不是至少有 1 个元素通过了被提供的函数测试。它返回的是一个 Boolean 类型的值。该方法不改变原数组。
1 | let arr = [2, 1, 4, 3] |
filter()
filter()
方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。该方法不改变原数组。
1 | let arr = [2, 1, 4, 3] |
reduce()
reduce()
方法对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。该方法不改变原数组。
1 | let arr = [1, 2, 3] |
reduceRight()
reduceRight()
方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。该方法不改变原数组。
1 | let arr = [[0, 1],[2, 3],[4, 5]] |