数组方法总结

方法名 功能 返回值 是否改变原数组
concat 通过合并(连接)现有数组来创建一个新数组 返回合并之后的数组
copyWithin 将前两个数组元素复制到最后两个数组元素 数组,被改变的数组
entries 创建一个 Array Iterator 对象,并创建一个循环来迭代每个键/值对 方法返回带有键/值对的 Array Iterator 对象
every (迭代) 判断数组中所有的元素是否满足某个条件 全都满足返回true 只要有一个不满足 返回false
fill 用静态值填充所有数组元素 数组,改变后的数组。
find 方法返回数组中第一个通过测试的元素的值 如果数组中的任何元素通过测试,则返回数组元素值,否则返回 undefined。
findIndex 方法返回数组中通过测试的第一个元素的索引 如果数组中的任何元素通过测试,则返回数组元素索引,否则返回 -1
from 从字符串创建数组 Array 对象
isArray 检查对象是否为数组 布尔值。如果对象是数组则返回 true,否则返回 false。
keys 方法返回带有数组键的 Array Iterator 对象 Array Iterator 对象
push (在结尾)向数组添加一或多个元素 返回新数组长度
unshift (在开头)向数组添加一或多个元素 返回新数组长度
pop 删除数组的最后一位 返回被删除的数据
shift 删除首个数组元素,并把所有其他元素“位移”到更低的索引 返回被删除的数据
reverse 反转数组中的元素 返回反转后数组
sort 以字母顺序(字符串Unicode码点)对数组进行排序 返回新数组
splice 在指定位置删除指定个数元素再增加任意个数元素 (实现数组任意位置的增删改) 返回删除的数据
join 用特定的字符,将数组拼接形成字符串 (默认”,”) 返回拼接后的新数组
slice 裁切指定位置的数组 被裁切的元素形成的新数组
toString 将数组转换为字符串 新数组
valueOf 查询数组原始值 数组的原始值
indexOf 查询某个元素在数组中第一次出现的位置 存在该元素,返回下标,不存在 返回 -1
lastIndexOf 方向查询数组某个元素在数组中第一次出现的位置 存在该元素,返回下标,不存在 返回 -1
forEach (迭代) 遍历数组,每次循环中执行传入的回调函数 无/(undefined)
map (迭代) 遍历数组, 每次循环时执行传入的回调函数,根据回调函数的返回值,生成一个新的数组 有/自定义
filter (迭代) 遍历数组, 每次循环时执行传入的回调函数,回调函数返回一个条件,把满足条件的元素筛选出来放到新数组中 满足条件的元素组成的新数组
some (迭代) 判断数组中是否存在,满足某个条件的元素 只要有一个元素满足条件就返回true,都不满足返回false
reduce (归并)遍历数组, 每次循环时执行传入的回调函数,回调函数会返回一个值,将该值作为初始值prev,传入到下一次函数中 最终操作的结果
reduceRight (归并)用法同reduce,只不过是从右向左 同reduce
includes 判断一个数组是否包含一个指定的值 是返回 true,否则false

concat

定义和用法

concat() 方法用于连接两个或多个数组。
concat() 方法不会更改现有数组,而是返回一个新数组,其中包含已连接数组的值。、

语法
1
array1.concat(array2, array3, ..., arrayX)
参数
参数 描述
array2, array3, …, arrayX 必需。要连接的数组。

实例

连接两个数组

1
2
3
4
var sedan = ["S60", "S90"];
var SUV = ["XC40", "XC60", "XC90"];
var Volvo = sedan.concat(SUV);
console.log(Volvo) //['S60', 'S90', 'XC40', 'XC60', 'XC90']

copyWithin

定义和用法

copyWithin() 方法将数组元素复制到数组中的另一个位置,覆盖现有值。
copyWithin() 方法永远不会向数组添加更多项。
提示:copyWithin() 方法会覆盖原始数组。

语法
1
array.copyWithin(target, start, end)
参数
参数 描述
target 必需。将元素复制到的索引位置。
start 可选。开始复制元素的索引位置(默认为 0)。
end 可选。停止从中复制元素的索引位置(默认为 array.length)。

实例

将前两个数组元素复制到最后两个数组元素:

1
2
3
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.copyWithin(2, 0);
console.log(fruits) //['Banana', 'Orange', 'Banana', 'Orange']

entries

定义和用法

entries() 方法返回带有键/值对的 Array Iterator 对象。
对于原始数组中的每一项,新的迭代对象将包含一个以索引为键,以项值为值的数组:
[0, “Banana”]
[1, “Orange”]
[2, “Apple”]
[3, “Mango”]
注释:entries() 不会更改原始数组。

语法
1
array.entries()

实例

创建一个 Array Iterator 对象,并创建一个循环来迭代每个键/值对:

1
2
3
4
5
6
7
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var f = fruits.entries();

for (x of f) {
document.getElementById("demo").innerHTML += x;
}
//0,Banana1,Orange2,Apple3,Mango

every

定义和用法

every() 方法检查数组中的所有元素是否都通过了测试(被作为函数提供)。
every() 方法对数组中存在的每个元素执行一次函数:
如果找到函数返回 false 值的数组元素,every() 返回 false(并且不检查剩余值)
如果没有出现 false,every() 返回 true
注释:every() 不对没有值的数组元素执行函数。
注释:every() 不改变原始数组。

语法
1
array.every(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

检查 age 数组中的所有值是否都为 18 或以上:

1
2
3
4
var ages = [32, 33, 16, 40];

ages.every(n=>n>18) // false


fill

定义和用法

fill() 方法用静态值填充数组中的指定元素。
您可以指定开始和结束填充的位置。如果未指定,则将填充所有元素。
注释:fill() 会覆盖原始数组。

语法
1
array.fill(value, start, end)
参数
参数 描述
value 必需。用于填充数组的值。
start 可选。开始填充数组的索引(默认为 0)。
end 可选。停止填充数组的索引(默认为 array.length)。

实例

连接两个数组

1
2
3
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Kiwi");
console.log(fruits) //['Kiwi', 'Kiwi', 'Kiwi', 'Kiwi']

filter

定义和用法

filter() 方法创建数组,其中填充了所有通过测试的数组元素(作为函数提供)。
注释:filter() 不会对没有值的数组元素执行该函数。
注释:filter() 不会改变原始数组。

语法
1
array.filter(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

返回由 ages 数组中所有 18 岁或以上的值组成的数组:

1
2
3
var ages = [32, 33, 16, 40];

ages.filter(n=>n>=18) //[32, 33, 40]

find

定义和用法

find() 方法返回数组中第一个通过测试的元素的值(作为函数提供)。
find() 方法对数组中存在的每个元素执行一次函数:
如果找到函数返回 true 值的数组元素,则 find() 返回该数组元素的值(并且不检查剩余值)
否则返回 undefined
注释:find() 不对空数组执行该函数。
注释:find() 不会改变原始数组。

语法
1
array.find(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

获取数组中第一个值为 18 或更大的元素的值:

1
2
3
4
var ages = [3, 10, 18, 20];

ages.find(n=>n>=18) //18


findIndex

定义和用法

findIndex() 方法返回数组中通过测试的第一个元素的索引(作为函数提供)。
findIndex() 方法对数组中存在的每个元素执行一次函数:
如果找到函数返回 true 值的数组元素,则 findIndex() 返回该数组元素的索引(并且不检查剩余值)
否则返回 -1
注释:findIndex() 不会为没有值的数组元素执行函数。
注释:findIndex() 不会改变原始数组。

语法
1
array.findIndex(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

获取数组中第一个值等于或大于 18 的元素的索引:

1
2
var ages = [3, 10, 18, 20];
ages.findIndex(n=>n>=18) // 18

forEach

定义和用法

forEach() 方法按顺序为数组中的每个元素调用一次函数。
注释:对于没有值的数组元素,不执行forEach() 方法。

语法
1
array.forEach(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

列出数组中的每一项:

1
2
3
4
5
var fruits = ["apple", "orange", "cherry"];
fruits.forEach((item, index) => {
console.log(item,index)
});


from

定义和用法

from() 方法从具有 length 属性或可迭代对象的任何对象返回 Array 对象。

语法
1
Array.from(object, mapFunction, thisValue)
参数
参数 描述
object 必需。需转换为数组的对象。
mapFunction 可选。对数组的每个项目调用的 map 函数。
thisValue 可选。执行 mapFunction 时用作 this 的值。

实例

从字符串创建数组:

1
var myArr = Array.from("ABCDEFG");//['A', 'B', 'C', 'D', 'E', 'F', 'G']

includes

定义和用法

includes() 方法确定数组是否包含指定的元素。
如果数组包含元素,则此方法返回 true,否则返回 false。
注释:includes() 方法区分大小写。

语法
1
array.includes(element, start)
参数
参数 描述
element 必需。要搜索的元素。
start 可选。默认 0。在数组中的哪个位置开始搜索。

实例

检查数组是否包含 “Mango”:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango"); // true

indexOf

定义和用法

indexOf() 方法在数组中搜索指定项目,并返回其位置。
搜索将从指定位置开始,如果未指定开始位置,则从头开始,并在数组末尾结束搜索。
如果未找到该项目,则 indexOf() 返回 -1。
如果该项目出现多次,则 indexOf() 方法返回第一次出现的位置。
注释:第一项的位置为 0,第二项的位置为 1,依此类推。
提示:如果您想从尾到头搜索,请使用 lastIndexOf() 方法。

语法
1
array.indexOf(item, start)
参数
参数 描述
item 必需。要搜索的项目。
start 可选。从哪里开始搜索。负值给定的位置将从结尾计数,然后搜索到最后。

实例

在数组中搜索 “Apple” 项:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple"); //2

isArray

定义和用法

isArray() 方法确定对象是否为数组。
如果对象是数组,则此函数返回 true,否则返回 false。

语法
1
Array.isArray(obj)
参数
参数 描述
obj 必需。需测试的对象。

实例

检查对象是否为数组:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
Array.isArray(fruits); //true

join

定义和用法

join() 方法将数组作为字符串返回。
元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。
注释:join() 方法不会改变原始数组。

语法
1
array.join(separator)
参数
参数 描述
separator 可选。要使用的分隔符。如果省略,元素用逗号分隔。

实例

将数组元素转换为字符串:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var energy = fruits.join();//'Banana,Orange,Apple,Mango'

keys

定义和用法

keys() 方法返回带有数组键的 Array Iterator 对象。
注释:keys() 方法不改变原数组。

语法
1
array.keys()

实例

创建一个 Array Iterator 对象,只包含数组的键,然后遍历每个键:

1
2
3
4
5
6
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var fk = fruits.keys();

for (x of fk) {
console.log(x) // 0 1 2 3
}

lastIndexOf

定义和用法

lastIndexOf() 方法在数组中搜索指定项目,并返回其位置。
搜索将从指定位置开始,如果未指定开始位置,则从末尾开始,并在数组的开头结束搜索。
如果未找到该项目,则 lastIndexOf() 方法返回 -1。
如果要搜索的项目不止一次出现,lastIndexOf() 方法将返回最后一次出现的位置。
提示:如果要从头到尾搜索,使用 indexOf() 方法。

语法
1
array.lastIndexOf(item, start)
参数
参数 描述
item 必需。要搜索的项目。
start 可选。从哪里开始搜索。负值的给定的位置从末尾计数,然后搜索到开头。

实例

在数组中搜索 “Apple” 项:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple"); //2

map

定义和用法

map() 方法使用为每个数组元素调用函数的结果创建新数组。
map() 方法按顺序为数组中的每个元素调用一次提供的函数。
注释:map() 对没有值的数组元素不执行函数。
注释:map() 不会改变原始数组。

语法
1
array.map(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

返回原始数组中所有值的平方根的数组:

1
2
3
var numbers = [4, 9, 16, 25];
var x = numbers.map(Math.sqrt)
console.log(x) //[2, 3, 4, 5]

pop

定义和用法

pop() 方法移除数组的最后一个元素,并返回该元素。
注释:pop() 方法会改变数组的长度。
提示:如需删除数组的第一个元素,请使用 shift() 方法。

语法
1
array.pop()

实例

删除数组的最后一个元素:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();//Mango

push

定义和用法

push() 方法向数组末尾添加新项目,并返回新长度。
提示:新的项目将被添加到数组的末尾。
注释:push() 方法会改变数组的长度。
提示:如需在数组的开头添加项目,请使用 unshift() 方法。

语法
1
array.push(item1, item2, ..., itemX)

实例

向数组添加一个新项目:

1
2
3
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi"); //5
console.log(fruits) //['Banana', 'Orange', 'Apple', 'Mango', 'Kiwi']

reduce

定义和用法

reduce() 方法将数组缩减为单个值。
reduce() 方法为数组的每个值(从左到右)执行提供的函数。
函数的返回值存储在累加器中(结果/总计)。
注释:对没有值的数组元素,不执行 reduce() 方法。
注释:reduce() 方法不会改变原始数组。

语法
1
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数
参数 描述
function(total, currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
total 必需。initialValue,或函数先前返回的值。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
initialValue 可选。作为初始值传递给函数的值。

实例

从头开始减去数组中的数字:

1
2
3
var numbers = [175, 50, 25];
numbers.reduce((total, num)=> total - num) //100


reduceRight

定义和用法

reduceRight() 方法将数组缩减为单个值。
reduceRight() 方法为数组的每个值(从右到左)执行提供的函数。
函数的返回值存储在累加器中(结果/总计)。
注释:对没有值的数组元素,不执行 reduceRight() 方法。

语法
1
array.reduceRight(function(total, currentValue, currentIndex, arr), initialValue)
参数
参数 描述
function(total, currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
total 必需。initialValue,或函数先前返回的值。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
initialValue 可选。作为初始值传递给函数的值。

实例

减去数组中的数字,从末尾开始:

1
2
3
var numbers = [175, 50, 25];
numbers.reduceRight((total, num) => total - num) //-200


reverse

定义和用法

reverse() 方法反转数组中元素的顺序。
注释:reverse() 方法将改变原始数组。

语法
1
array.reverse()

实例

反转数组中元素的顺序:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();//['Mango', 'Apple', 'Orange', 'Banana']

shift

定义和用法

shift() 方法移除数组的第一项。
注释:shift() 方法会改变数组的长度。
注释:shift 方法的返回值是被移除的项目。
注释:shift() 方法会改变原始数组。
提示:如需删除数组的最后一项,请使用 pop() 方法。

语法
1
array.shift()

实例

删除数组中的第一个项目:

1
2
3
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift();//Banana
console.log(fruits) //['Orange', 'Apple', 'Mango']

slice

定义和用法

slice() 方法以新的数组对象,返回数组中被选中的元素。
slice() 方法选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。
注释:slice() 方法不会改变原始数组。

语法
1
array.slice(start, end)
参数
参数 描述
start 可选。整数,指定从哪里开始选择(第一个元素的索引为 0)。使用负数从数组的末尾进行选择。如果省略,则类似于 “0”。
end 可选。整数,指定结束选择的位置。如果省略,将选择从开始位置到数组末尾的所有元素。使用负数从数组末尾进行选择。

实例

从数组中选择元素:

1
2
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3); //['Orange', 'Lemon']

some

定义和用法

some() 方法检查数组中的任何元素是否通过测试(作为函数提供)。
some() 方法对数组中存在的每个元素执行一次函数:
如果找到函数返回真值的数组元素,some() 返回真(并且不检查剩余值)
否则返回 false
注释:some() 对没有值的数组元素不执行函数。
注释:some() 不改变原始数组。

语法
1
array.some(function(currentValue, index, arr), thisValue)
参数
参数 描述
function(currentValue, index, arr) 必需。为数组中的每个元素运行的函数。
currentValue 必需。当前元素的值。
index 可选。当前元素的数组索引。
arr 可选。当前元素所属的数组对象
thisValue 可选。要传递给函数以用作其 “this” 值的值。 如果此参数为空,则值 “undefined” 将作为其 “this” 值传递。

实例

检查 ages 数组中是否有 18 或以上的值:

1
2
var ages = [3, 10, 18, 20];
ages.some(n=>n>=18) //true

sort

定义和用法

sort() 方法对数组的项目进行排序。
排序顺序可以是按字母或数字,也可以是升序(向上)或降序(向下)。
默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。
这适用于字符串(”Apple” 出现在 “Banana” 之前)。但是,如果数字按字符串排序,则 “25” 大于 “100” ,因为 “2” 大于 “1”。
正因为如此,sort() 方法在对数字进行排序时会产生不正确的结果。
您可以通过提供“比较函数”来解决此问题(请参阅下面的“参数值”)。
注释:sort() 方法会改变原始数组。

语法
1
array.sort(compareFunction)
参数
参数 描述
compareFunction 可选。定义替代排序顺序的函数。该函数应返回负值、零值或正值,具体取决于参数,例如:function(a, b){return a-b}sort() 方法比较两个值时,将值发送给比较函数,根据返回的(负、零、正)值对值进行排序。举例:比较 40 和 100 时,sort() 方法调用比较函数(40,100)。该函数计算 40-100,并返回 -60(负值)。sort 函数会将 40 排序为小于 100 的值。

实例

排序数组:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); //['Apple', 'Banana', 'Mango', 'Orange']

splice

定义和用法

splice() 方法向/从数组添加/删除项目,并返回删除的项目。
注释:splice() 方法会改变原始数组。

语法
1
array.splice(index, howmany, item1, ....., itemX)
参数
参数 描述
index 必需。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。
howmany 可选。要删除的项目数。如果设置为 0,则不会删除任何项目。
item1, …, itemX 可选。要添加到数组中的新项目。

实例

将项目添加到数组:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2, 0, "Lemon", "Kiwi"); //['Banana', 'Orange', 'Lemon', 'Kiwi', 'Apple', 'Mango']

toString

定义和用法

toString() 方法返回包含所有数组值的字符串,以逗号分隔。
注释:toString() 方法不会改变原始数组。

语法
1
array.toString()

实例

将数组转换为字符串:

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x = fruits.toString(); //'Banana,Orange,Apple,Mango'

unshift

定义和用法

unshift() 方法将新项添加到数组的开头,并返回新的长度。
注释:unshift() 方法会改变数组的长度。
提示:如需在数组末尾添加新项,请使用 push() 方法。

语法
1
array.unshift(item1, item2, ..., itemX)

实例

将新项目添加到数组的开头:

1
2
3
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon","Pineapple"); //6
console.log(fruits) //['Lemon', 'Pineapple', 'Banana', 'Orange', 'Apple', 'Mango']

valueOf

定义和用法

valueOf() 方法返回数组。
valueOf() 方法是数组对象的默认方法。
注释:valueOf() 方法不会改变原始数组。

语法
1
array.valueOf()

实例

valueOf() 是数组对象的默认方法。

1
2
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var v = fruits.valueOf(); // 返回 fruits--['Banana', 'Orange', 'Apple', 'Mango']