【js篇】JavaScript 数组原生方法大全详解

65 阅读3分钟

JavaScript 中的数组(Array)是一种非常重要的数据结构,提供了丰富的原生方法用于操作数组元素。这些方法可以分为转换、增删、排序、查找、迭代、归并等多个类别,是前端开发中处理数据的核心工具。


✅ 一句话总结

JavaScript 数组原生方法丰富多样,包括转换、增删、排序、查找、迭代、归并等操作,熟练掌握这些方法可以显著提升开发效率和代码质量。


✅ 一、数组与字符串的转换方法

方法名说明
toString()将数组转换为字符串,元素用逗号分隔
toLocaleString()将数组元素转换为本地字符串格式(考虑地区差异)
join(separator)将数组元素用指定的分隔符连接成字符串

📌 示例:

const arr = [1, 2, 3];
console.log(arr.join('-')); // "1-2-3"

✅ 二、尾部操作方法(栈操作)

方法名说明
push(...items)向数组末尾添加一个或多个元素,返回新长度
pop()删除并返回数组最后一个元素

📌 示例:

const arr = [1, 2];
arr.push(3, 4); // [1,2,3,4]
arr.pop();      // 4,arr => [1,2,3]

✅ 三、首部操作方法(队列操作)

方法名说明
unshift(...items)向数组开头添加一个或多个元素,返回新长度
shift()删除并返回数组第一个元素

📌 示例:

const arr = [2, 3];
arr.unshift(0, 1); // [0,1,2,3]
arr.shift();       // 0,arr => [1,2,3]

✅ 四、排序方法

方法名说明
reverse()反转数组元素顺序
sort(compareFn)对数组进行排序,默认按字符串顺序排序;可传入比较函数自定义排序逻辑

📌 示例:

const arr = [3, 1, 2];
arr.sort((a, b) => a - b); // [1,2,3]
arr.reverse();             // [3,2,1]

✅ 五、连接数组的方法

方法名说明
concat(...arrays)合并多个数组,返回新数组,不修改原数组

📌 示例:

const arr1 = [1, 2];
const arr2 = [3, 4];
const newArr = arr1.concat(arr2); // [1,2,3,4]

✅ 六、截取数组的方法

方法名说明
slice(start, end)返回从 startend(不包括)的子数组,不修改原数组

📌 示例:

const arr = [1, 2, 3, 4];
const subArr = arr.slice(1, 3); // [2,3]

✅ 七、插入/删除/替换元素的方法

方法名说明
splice(start, deleteCount, ...items)start 位置开始删除 deleteCount 个元素,并插入新元素,返回被删除的元素数组,会修改原数组

📌 示例:

const arr = [1, 2, 3, 4];
arr.splice(1, 2, 'a', 'b'); // 删除 [2,3],插入 ['a','b']
// arr => [1, 'a', 'b', 4]

✅ 八、查找元素索引的方法

方法名说明
indexOf(item, fromIndex)查找 item 的第一个出现的索引,找不到返回 -1
lastIndexOf(item, fromIndex)从后往前查找 item 的索引

📌 示例:

const arr = [1, 2, 3, 2];
console.log(arr.indexOf(2));      // 1
console.log(arr.lastIndexOf(2));  // 3

✅ 九、迭代方法(不会修改原数组)

方法名说明
forEach(callback)遍历数组,无返回值
map(callback)遍历数组并返回新数组
filter(callback)返回符合条件的元素组成的新数组
some(callback)只要有一个元素满足条件就返回 true
every(callback)所有元素都满足条件才返回 true

📌 示例:

const arr = [1, 2, 3, 4];

const doubled = arr.map(x => x * 2); // [2,4,6,8]
const evens = arr.filter(x => x % 2 === 0); // [2,4]
const hasEven = arr.some(x => x % 2 === 0); // true
const allEven = arr.every(x => x % 2 === 0); // false
arr.forEach(x => console.log(x));

✅ 十、归并方法

方法名说明
reduce(callback, initialValue)从左到右累积计算,返回最终值
reduceRight(callback, initialValue)从右到左累积计算

📌 示例:

const arr = [1, 2, 3, 4];

const sum = arr.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 10

const str = arr.reduce((acc, curr) => acc + curr, '');
console.log(str); // "1234"

✅ 十一、一句话总结

JavaScript 数组原生方法功能丰富,涵盖了数组的转换、增删、排序、查找、迭代、归并等操作,是处理数据的核心工具。掌握这些方法可以写出更简洁、高效、可维护的代码。


💡 进阶建议

  • 使用 mapfilterreduce 等函数式编程方法提升代码可读性;
  • 使用 sliceconcat 等方法避免直接修改原数组,实现不可变性;
  • 使用 reduce 可以实现扁平化、统计、分组等复杂操作;
  • 注意 forEach 没有返回值,不能链式调用;
  • someevery 可以用于条件判断,提前终止遍历;