JavaScript 数组的拓展方法

JavaScript 提供了很多实用的数组拓展方法,以下列举其中所有(不包含一些废弃的方法):

拓展方法速查

方法示例

concat

Array.prototype.concat:连接两个或多个数组,并返回一个新数组。

copyWithin

Array.prototype.copyWithin:从数组内部复制一段数据到数组另一个位置上,并覆盖原有内容。它接受两个必需参数,第一个参数为目标起始索引,第二个参数为复制起始索引。第三个可选参数为复制结束索引,如果省略将复制至末尾。

entries

Array.prototype.entries:返回一个包含每个元素 key 和 value 的新数组迭代器对象,可以通过 for…of 循环来遍历键值对。

every

Array.prototype.every:检查数组中是否所有元素都符合指定条件,返回布尔值。

fill

Array.prototype.fill:使用一个指定的值填充数组,可以指定填充的起始和结束索引。(注意原数组会被改变)

filter

Array.prototype.filter:过滤出符合条件的元素,返回一个新数组。它接受一个参数,为一个回调函数,这个回调函数会被传入三个参数分别是当前遍历到的元素、该元素的索引和原数组。

1
2
3
const arr = [1, 2, 3, 4, 5];
const newArr = arr.filter(num => num % 2 === 0);
console.log(newArr); // 输出:[2, 4]

find

Array.prototype.find:找到符合条件的第一个元素,并返回该元素。它接受一个参数,为一个回调函数,这个回调函数会被传入三个参数分别是当前遍历到的元素、该元素的索引和原数组。

1
2
3
const arr = [1, 2, 3, 4, 5];
const result = arr.find(num => num % 2 === 0);
console.log(result); // 输出:2

findIndex

Array.prototype.findIndex:找到符合条件的第一个元素的索引,并返回该索引。它接受一个参数,为一个回调函数,这个回调函数会被传入三个参数分别是当前遍历到的元素、该元素的索引和原数组。

1
2
3
const arr = [1, 2, 3, 4, 5];
const index = arr.findIndex(num => num === 3);
console.log(index); // 输出:2

flat

Array.prototype.flat:将嵌套的数组打平为一个一维数组。

flatMap

Array.prototype.flatMap:提供一个指定回调函数进行映射以替换和操作以前的映射,然后将变形数组扁平化为新的数组。

forEach

Array.prototype.forEach:针对数组的每个元素执行一次给定函数。

from

Array.from:从类似数组或可迭代对象中创建一个新数组。

includes

Array.prototype.includes:判断数组是否包含指定的元素,返回布尔值。

indexOf

Array.prototype.indexOf:返回指定元素在数组中首次出现的位置索引,如果不存在则返回 -1。

join

Array.prototype.join:把所有数组元素连接成一个字符串。

keys

Array.prototype.keys:返回一个包含数组中每个索引 key 的新数组迭代器对象。

lastIndexOf

Array.prototype.lastIndexOf:返回一个指定元素在数组中最后出现的位置索引,如果不存在则返回 -1。

map

Array.prototype.map:遍历数组并根据每个元素进行操作,返回一个新数组。它接受一个参数,为一个回调函数,这个回调函数会被传入三个参数分别是当前遍历到的元素、该元素的索引和原数组。

1
2
3
const arr = [1, 2, 3];
const newArr = arr.map(num => num * 2);
console.log(newArr); // 输出:[2, 4, 6]

pop

Array.prototype.pop:删除并返回数组的最后一个元素。

push

Array.prototype.push:向数组末尾添加一个或多个元素,并返回新的长度。

reduce

Array.prototype.reduce:将数组中的每个元素按照指定的方式进行组合,并返回最终结果。它接受两个参数,第一个参数为一个回调函数,第二个参数为初始值(可选),回调函数有四个参数,分别是累计值、当前值、当前索引、原数组。

1
2
3
const arr = [1, 2, 3];
const sum = arr.reduce((prev, curr) => prev + curr, 0);
console.log(sum); // 输出:6

reduceRight

Array.prototype.reduceRight:与 reduce 方法类似,不同之处在于它是从右到左遍历数组的。

reverse

Array.prototype.reverse:反转数组中元素的顺序。

shift

Array.prototype.shift:删除并返回数组的第一个元素。

slice

Array.prototype.slice:返回一个从原数组中指定开始、指定结束的子数组。

some

Array.prototype.some:检查数组中是否至少有一个元素符合指定条件,返回布尔值。

sort

Array.prototype.sort:用指定的排序函数对数组元素进行排序。

splice

Array.prototype.splice:通过删除或替换现有元素或者原地添加新的元素来修改数组,并以此返回被修改的内容。(注意原数组会被改变)

toLocaleString

Array.prototype.toLocaleString:把数组转换为本地字符串并返回结果。

toSource

Array.prototype.toSource:返回表示数组字面量的字符串。

toString

Array.prototype.toString:把数组转换为字符串并返回结果。

unshift

Array.prototype.unshift:将一个或多个元素插入到数组开头,并返回新的长度。

values

Array.prototype.values:返回一个包含数组每个值 value 的新数组迭代器对象。

结论:

JavaScript 提供了许多实用的数组拓展方法,我们可以根据不同场景进行选择。这些方法使得我们能够方便地操作数组,大大提高了开发效率。同时这些方法还都支持链式调用,通过在调用之间添加点号 .,可以将多个操作顺序连接起来,以一条语句实现复杂的操作。 concat