JavaScript 数组常用操作方法详解

182 阅读5分钟

在 JavaScript 中,数组是一种非常常用的数据结构,提供了许多内置的方法来帮助开发者有效地操作数组。通过这些方法,我们可以轻松地添加、删除、查找、转换和遍历数组元素。以下是 JavaScript 中常用的数组操作方法的详细解释及其应用示例。

1. push() 方法

功能:向数组的末尾添加一个或多个元素,并返回新的数组长度。

const array = [1, 2, 3];
array.push(4);
console.log(array); // 输出 [1, 2, 3, 4]

解析

  • push() 方法会修改原数组,添加新元素到数组末尾。
  • 返回的是修改后的数组长度,而不是新数组。

2. pop() 方法

功能:移除数组的最后一个元素,并返回该元素的值。

const array = [1, 2, 3, 4];
const removedElement = array.pop();
console.log(removedElement);  // 输出 4
console.log(array);  // 输出 [1, 2, 3]

解析

  • pop() 从数组末尾删除元素,并返回被删除的元素。
  • 它修改原数组,数组的长度减1。

3. shift() 方法

功能:移除数组的第一个元素,并返回该元素的值。

const array = [1, 2, 3, 4];
const removedElement = array.shift();
console.log(removedElement);  // 输出 1
console.log(array);  // 输出 [2, 3, 4]

解析

  • shift() 会从数组的前端移除元素,并返回被移除的元素。
  • 该方法会修改原数组,数组长度减1。

4. unshift() 方法

功能:向数组的开头添加一个或多个元素,并返回新的数组长度。

const array = [2, 3, 4];
array.unshift(1);
console.log(array);  // 输出 [1, 2, 3, 4]

解析

  • unshift() 方法会向数组的开头添加一个或多个元素。
  • 返回的是修改后的数组长度,而不是新数组。

5. concat() 方法

功能:将多个数组或值合并成一个新数组。

const array1 = [1, 2];
const array2 = [3, 4];
const newArray = array1.concat(array2);
console.log(newArray);  // 输出 [1, 2, 3, 4]

解析

  • concat() 不会修改原数组,它返回一个新的数组。
  • 可以将多个数组或值合并成一个新数组。

6. slice() 方法

功能:返回数组中指定范围的元素组成的新数组,不改变原数组。

const array = [1, 2, 3, 4, 5];
const newArray = array.slice(1, 3);
console.log(newArray);  // 输出 [2, 3]
console.log(array);  // 输出 [1, 2, 3, 4, 5]

解析

  • slice(start, end) 返回从 start 索引到 end 索引(不包括 end)之间的元素组成的新数组。
  • 不修改原数组。

7. splice() 方法

功能:从数组中添加或删除元素,并返回删除的元素。

const array = [1, 2, 3, 4, 5];
const removed = array.splice(2, 2, 'a', 'b');
console.log(removed);  // 输出 [3, 4]
console.log(array);  // 输出 [1, 2, 'a', 'b', 5]

解析

  • splice(start, deleteCount, ...items) 方法删除 start 索引开始的 deleteCount 个元素,并可以添加新的元素。
  • 修改原数组,返回一个包含被删除元素的数组。

8. forEach() 方法

功能:对数组中的每个元素执行指定的操作。

const array = [1, 2, 3, 4, 5];
array.forEach((element, index) => {
  console.log(`index: ${index}, element: ${element}`);
});
// 输出:
// index: 0, element: 1
// index: 1, element: 2
// index: 2, element: 3
// index: 3, element: 4
// index: 4, element: 5

解析

  • forEach() 对数组的每个元素执行回调函数,无法中途跳出或返回结果。
  • 它不返回值,仅用于遍历和副作用操作。

9. map() 方法

功能:对数组中的每个元素执行指定的操作,并返回一个新数组。

const array = [1, 2, 3, 4, 5];
const newArray = array.map((element) => {
  return element * 2;
});
console.log(newArray);  // 输出 [2, 4, 6, 8, 10]

解析

  • map() 创建并返回一个新数组,每个元素是原数组元素执行回调函数后的结果。
  • 不修改原数组。

10. filter() 方法

功能:使用指定的条件过滤数组元素,并返回符合条件的新数组。

const array = [1, 2, 3, 4, 5];
const newArray = array.filter((element) => {
  return element % 2 === 0;
});
console.log(newArray);  // 输出 [2, 4]

解析

  • filter() 会返回一个新数组,包含符合条件的元素。
  • 不修改原数组。

11. reduce() 方法

功能:对数组中的所有元素执行指定的操作,返回一个累加值。

const array = [1, 2, 3, 4, 5];
const sum = array.reduce((accumulator, currentValue) => {
  return accumulator + currentValue;
}, 0);
console.log(sum);  // 输出 15

解析

  • reduce() 方法通过提供的回调函数,累加数组中的每个元素,最终返回一个累加值。
  • 第一个参数是累加器,第二个是当前值,第二个参数是初始值。

12. find() 方法

功能:找到数组中满足条件的第一个元素,并返回该元素。

const array = [1, 2, 3, 4, 5];
const foundElement = array.find((element) => {
  return element > 3;
});
console.log(foundElement);  // 输出 4

解析

  • find() 返回满足条件的第一个元素,若没有找到,返回 undefined
  • 不修改原数组。

13. includes() 方法

功能:判断数组中是否包含指定的元素,返回布尔值。

const array = [1, 2, 3, 4, 5];
console.log(array.includes(3));  // 输出 true
console.log(array.includes(6));  // 输出 false

解析

  • includes() 返回一个布尔值,表示数组中是否存在指定元素。

14. indexOf() 方法

功能:返回数组中指定元素的第一个匹配索引,如果没有找到,则返回 -1

const array = [1, 2, 3, 4, 5];
console.log(array.indexOf(3));  // 输出 2
console.log(array.indexOf(6));  // 输出 -1

解析

  • indexOf() 返回指定元素第一次出现的索引,若不存在则返回 -1

15. join() 方法

功能:将数组中的所有元素连接成一个字符串,元素之间可以指定分隔符。

const array = [1, 2, 3, 4, 5];
const string = array.join('-');
console.log(string);  // 输出 "1-2-3-4-5"

解析

  • join() 方法将数组的所有元素连接成一个字符串,默认分隔符为逗号 ,,可以自定义分隔符。

总结

这些数组方法提供了丰富的功能,帮助开发者高效地操作数组。无论是添加、删除元素,还是查找、转换数组,都可以利用这些方法进行灵活处理。理解并掌握这些方法将极大提升你在 JavaScript 开发中的效率。闲来无事简单记录一下。