JavaScript 提供了许多强大的数组方法,可以方便地对数组进行操作。以下是主要的数组方法分类和介绍:
push() - 在数组末尾添加一个或多个元素,返回新长度
let arr = [1, 2];
arr.push(3); // [1, 2, 3]
pop() - 移除并返回数组的最后一个元素
let last = arr.pop(); // last = 3, arr = [1, 2]
shift() - 移除并返回数组的第一个元素
let first = arr.shift(); // first = 1, arr = [2]
unshift() - 在数组开头添加一个或多个元素,返回新长度
arr.unshift(0); // [0, 2]
join() - 将数组元素连接成字符串
[1, 2, 3].join('-'); // "1-2-3"
toString() - 返回数组的字符串表示
[1, 2, 3].toString(); // "1,2,3"
sort() - 对数组元素进行排序
[3, 1, 2].sort(); // [1, 2, 3]
reverse() - 反转数组元素的顺序
[1, 2, 3].reverse(); // [3, 2, 1]
concat() - 合并两个或多个数组
[1, 2].concat([3, 4]); // [1, 2, 3, 4]
slice() - 返回数组的一部分(浅拷贝)
[1, 2, 3, 4].slice(1, 3); // [2, 3]
splice() - 添加/删除数组元素(会修改原数组)
let arr = [1, 2, 3];
arr.splice(1, 1, 'a', 'b'); // arr = [1, 'a', 'b', 3]
indexOf() - 返回元素第一次出现的索引
[1, 2, 3, 2].indexOf(2); // 1
lastIndexOf() - 返回元素最后一次出现的索引
[1, 2, 3, 2].lastIndexOf(2); // 3
includes() - 检查数组是否包含某元素
[1, 2, 3].includes(2); // true
forEach() - 对每个元素执行函数
[1, 2, 3].forEach(x => console.log(x));
map() - 对每个元素执行函数并返回新数组
[1, 2, 3].map(x => x * 2); // [2, 4, 6]
filter() - 返回满足条件的元素组成的新数组
[1, 2, 3, 4].filter(x => x > 2); // [3, 4]
reduce() - 从左到右对元素执行累加器函数
[1, 2, 3].reduce((acc, val) => acc + val, 0); // 6
reduceRight() - 从右到左对元素执行累加器函数
[1, 2, 3].reduceRight((acc, val) => acc + val, 0); // 6
find() - 返回第一个满足条件的元素
[1, 2, 3].find(x => x > 1); // 2
findIndex() - 返回第一个满足条件的元素的索引
[1, 2, 3].findIndex(x => x > 1); // 1
every() - 检查所有元素是否满足条件
[1, 2, 3].every(x => x > 0); // true
some() - 检查是否有元素满足条件
[1, 2, 3].some(x => x > 2); // true
Array.from() - 从类数组或可迭代对象创建新数组
Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']
Array.of() - 根据参数创建新数组
Array.of(1, 2, 3); // [1, 2, 3]
fill() - 用固定值填充数组
new Array(3).fill(0); // [0, 0, 0]
copyWithin() - 复制数组的一部分到同一数组的另一位置
[1, 2, 3, 4, 5].copyWithin(0, 3); // [4, 5, 3, 4, 5]
flat() - 将嵌套数组"拉平"
[1, [2, [3]]].flat(2); // [1, 2, 3]
flatMap() - 先映射再拉平
[1, 2].flatMap(x => [x, x * 2]); // [1, 2, 2, 4]
这些方法极大地简化了数组操作,使JavaScript处理数据更加高效和便捷。