JavaScript数组是一种可以存储多个不同类型元素的有序集合,在实际开发中几乎处处可见,对数组进行增删改查、遍历处理是开发者的必备技能。掌握各类数组方法的特性,能让我们用更简洁的代码实现复杂的数据处理逻辑。

数组的基础创建与访问
数组的创建有两种常见方式,一种是字面量方式,另一种是构造函数方式,实际开发中更推荐字面量方式,写法更简洁。
// 字面量创建数组
let arr1 = [1, 'hello', true, {name: 'test'}];
// 构造函数创建数组
let arr2 = new Array(1, 2, 3);
// 访问数组元素,下标从0开始
console.log(arr1[0]); // 输出1
console.log(arr1[3].name); // 输出test
数组的增删改查常用方法
末尾操作:push和pop
push方法用于在数组末尾添加一个或多个元素,返回修改后数组的新长度;pop方法用于删除数组末尾的最后一个元素,返回被删除的元素。
let arr = [1, 2, 3]; // push添加元素 let newLength = arr.push(4, 5); console.log(arr); // 输出[1,2,3,4,5] console.log(newLength); // 输出5 // pop删除末尾元素 let deletedItem = arr.pop(); console.log(arr); // 输出[1,2,3,4] console.log(deletedItem); // 输出5
头部操作:unshift和shift
unshift方法用于在数组头部添加一个或多个元素,返回修改后数组的新长度;shift方法用于删除数组头部的第一个元素,返回被删除的元素。
let arr = [2, 3, 4]; // unshift添加头部元素 let len = arr.unshift(0, 1); console.log(arr); // 输出[0,1,2,3,4] console.log(len); // 输出5 // shift删除头部元素 let firstItem = arr.shift(); console.log(arr); // 输出[1,2,3,4] console.log(firstItem); // 输出0
截取与修改:slice和splice
slice方法用于截取数组的一部分,返回新的数组,不会修改原数组,参数分别是起始下标和结束下标(不包含结束下标的元素)。splice方法用于修改原数组,可以删除、添加、替换元素,第一个参数是起始下标,第二个参数是删除的元素个数,后面的参数是要添加的新元素,返回被删除的元素组成的数组。
let arr = [1, 2, 3, 4, 5]; // slice截取数组 let subArr = arr.slice(1, 3); console.log(subArr); // 输出[2,3] console.log(arr); // 原数组不变,输出[1,2,3,4,5] // splice修改数组 let deleted = arr.splice(1, 2, 6, 7); console.log(deleted); // 输出被删除的[2,3] console.log(arr); // 原数组被修改,输出[1,6,7,4,5]
数组的遍历与转换方法
map方法
map方法会遍历数组的每个元素,对每个元素执行回调函数,返回一个新的数组,新数组的元素是回调函数的返回值,不会修改原数组。
let arr = [1, 2, 3, 4]; // 每个元素乘以2 let newArr = arr.map(item => item * 2); console.log(newArr); // 输出[2,4,6,8] console.log(arr); // 原数组不变,输出[1,2,3,4]
filter方法
filter方法会遍历数组的每个元素,筛选出符合回调函数条件的元素,组成新的数组返回,不会修改原数组。
let arr = [1, 2, 3, 4, 5, 6]; // 筛选偶数 let evenArr = arr.filter(item => item % 2 === 0); console.log(evenArr); // 输出[2,4,6]
reduce方法
reduce方法会对数组中的每个元素执行回调函数,将结果汇总为单个返回值,常用于求和、统计等场景。第一个参数是回调函数,第二个参数是初始值,回调函数的参数分别是累加值和当前元素。
let arr = [1, 2, 3, 4];
// 求和
let sum = arr.reduce((acc, cur) => acc + cur, 0);
console.log(sum); // 输出10
// 统计元素出现次数
let countMap = arr.reduce((acc, cur) => {
acc[cur] = (acc[cur] || 0) + 1;
return acc;
}, {});
console.log(countMap); // 输出{1:1,2:1,3:1,4:1}
其他常用数组方法
除了上述方法,还有一些高频使用的方法需要掌握:
indexOf:查找元素在数组中的第一个下标,不存在则返回-1includes:判断数组是否包含某个元素,返回布尔值join:将数组元素用指定分隔符拼接成字符串reverse:反转数组,修改原数组sort:对数组进行排序,默认按Unicode码点排序,可传入自定义排序函数
let arr = [3, 1, 4, 2];
console.log(arr.indexOf(4)); // 输出2
console.log(arr.includes(5)); // 输出false
console.log(arr.join('-')); // 输出3-1-4-2
arr.reverse();
console.log(arr); // 输出[2,4,1,3]
arr.sort((a, b) => a - b);
console.log(arr); // 输出[1,2,3,4]
| 方法名 | 是否修改原数组 | 返回值 | 核心作用 |
|---|---|---|---|
| push | 是 | 新数组长度 | 末尾添加元素 |
| pop | 是 | 被删除的元素 | 末尾删除元素 |
| slice | 否 | 截取的新数组 | 截取数组片段 |
| map | 否 | 处理后的新数组 | 遍历处理每个元素 |
| filter | 否 | 符合条件的新数组 | 筛选数组元素 |
JavaScript数组操作数组方法pushfilter修改时间:2026-07-10 02:30:13