JavaScript数组的方法

60 阅读4分钟

JavaScript 提供了许多用于操作数组的内置方法,以下是一些常用的数组方法及其功能:


1. 修改原数组的方法

这些方法会直接修改原数组。

方法名描述示例
push()在数组末尾添加一个或多个元素,返回新数组的长度。arr.push(4)→ 在 arr末尾添加 4
pop()移除并返回数组的最后一个元素。arr.pop()→ 移除并返回最后一个元素
unshift()在数组开头添加一个或多个元素,返回新数组的长度。arr.unshift(0)→ 在 arr开头添加 0
shift()移除并返回数组的第一个元素。arr.shift()→ 移除并返回第一个元素
splice()从指定位置删除或替换元素,返回被删除的元素。arr.splice(1, 2)→ 从索引 1 开始删除 2 个元素
reverse()反转数组的顺序。arr.reverse()→ 反转 arr
sort()对数组元素进行排序(默认按字符串排序)。arr.sort()→ 按字母顺序排序
fill()用指定值填充数组的某个区间。arr.fill(0, 1, 3)→ 将索引 1 到 3 的元素填充为 0

2. 不修改原数组的方法

这些方法不会修改原数组,而是返回一个新数组或值。

方法名描述示例
slice()返回数组的某一部分(浅拷贝)。arr.slice(1, 3)→ 返回索引 1 到 3 的元素
concat()合并两个或多个数组,返回新数组。arr.concat([4, 5])→ 合并 arr[4, 5]
join()将数组元素连接成一个字符串。arr.join('-')→ 将数组元素用 -连接
indexOf()返回指定元素的第一个索引,未找到返回 -1arr.indexOf('apple')→ 返回 'apple'的索引
lastIndexOf()返回指定元素的最后一个索引,未找到返回 -1arr.lastIndexOf('apple')→ 返回 'apple'的最后索引
includes()检查数组是否包含某个元素,返回布尔值。arr.includes('apple')→ 检查 arr是否包含 'apple'
find()返回第一个满足条件的元素,未找到返回 undefinedarr.find(x => x > 2)→ 返回第一个大于 2 的元素
findIndex()返回第一个满足条件的元素的索引,未找到返回 -1arr.findIndex(x => x > 2)→ 返回第一个大于 2 的元素的索引
filter()返回满足条件的所有元素组成的新数组。arr.filter(x => x > 2)→ 返回所有大于 2 的元素
map()对数组中的每个元素执行函数,返回结果组成的新数组。arr.map(x => x * 2)→ 返回每个元素乘以 2 后的数组
reduce()对数组元素从左到右执行累加器函数,返回最终结果。arr.reduce((acc, x) => acc + x, 0)→ 返回数组元素的总和
reduceRight()对数组元素从右到左执行累加器函数,返回最终结果。arr.reduceRight((acc, x) => acc + x, 0)→ 从右到左累加
every()检查数组中的所有元素是否都满足条件,返回布尔值。arr.every(x => x > 0)→ 检查是否所有元素都大于 0
some()检查数组中是否有至少一个元素满足条件,返回布尔值。arr.some(x => x > 0)→ 检查是否有元素大于 0
flat()将嵌套数组“拉平”成一维数组。arr.flat()→ 将多维数组转换为一维数组
flatMap()先对数组元素执行 map(),再对结果执行 flat()arr.flatMap(x => [x, x * 2])→ 先映射,再拉平

3. 迭代方法

这些方法用于遍历数组。

方法名描述示例
forEach()对数组中的每个元素执行函数。arr.forEach(x => console.log(x))→ 打印每个元素
entries()返回一个包含键值对的迭代器。for (const [index, value] of arr.entries())→ 遍历索引和值
keys()返回一个包含数组索引的迭代器。for (const index of arr.keys())→ 遍历索引
values()返回一个包含数组值的迭代器。for (const value of arr.values())→ 遍历值

4. 其他方法

方法名描述示例
toString()将数组转换为字符串。arr.toString()→ 返回数组的字符串形式
toLocaleString()将数组转换为本地化字符串。arr.toLocaleString()→ 返回本地化字符串
Array.isArray()检查一个值是否为数组。Array.isArray(arr)→ 检查 arr是否为数组
Array.from()将类数组对象或可迭代对象转换为数组。Array.from('hello')→ 返回 ['h', 'e', 'l', 'l', 'o']
Array.of()创建一个包含任意数量元素的新数组。Array.of(1, 2, 3)→ 返回 [1, 2, 3]

总结

  • 修改原数组push()pop()unshift()shift()splice()reverse()sort()fill()
  • 不修改原数组slice()concat()join()indexOf()lastIndexOf()includes()find()findIndex()filter()map()reduce()reduceRight()every()some()flat()flatMap()
  • 迭代方法forEach()entries()keys()values()
  • 其他方法toString()toLocaleString()Array.isArray()Array.from()Array.of()

根据需求选择合适的方法可以更高效地操作数组!