js array 操作

JavaScript 数组(Array)提供了丰富的内置方法,用于操作和处理数组数据。以下是 常用数组方法 的分类总结,涵盖其用途和示例:


一、增删改查

方法 作用 是否改变原数组 示例
push() 在末尾添加一个或多个元素 arr.push(4)[1,2,3,4]
pop() 删除并返回最后一个元素 arr.pop()3(原数组变 [1,2]
unshift() 在开头添加一个或多个元素 arr.unshift(0)[0,1,2,3]
shift() 删除并返回第一个元素 arr.shift()1(原数组变 [2,3]
splice() 在指定位置增删元素 arr.splice(1,1,'a') → 原数组变 [1,'a',3]
slice() 返回指定区间的浅拷贝新数组 arr.slice(1,3)[2,3]

二、遍历与迭代

方法 作用 返回值 示例
forEach() 对每个元素执行函数 undefined arr.forEach(x => console.log(x))
map() 对每个元素执行函数,返回新数组 新数组 arr.map(x => x*2)[2,4,6]
filter() 返回符合条件元素的新数组 新数组 arr.filter(x => x>2)[3]
find() 返回第一个符合条件的元素 元素或 undefined arr.find(x => x>2)3
findIndex() 返回第一个符合条件的元素索引 索引或 -1 arr.findIndex(x => x>2)2
some() 检查是否有元素符合条件 boolean arr.some(x => x>2)true
every() 检查是否所有元素符合条件 boolean arr.every(x => x>0)true
reduce() 从左到右累加元素 累加结果 arr.reduce((sum,x) => sum+x, 0)6
reduceRight() 从右到左累加元素 累加结果 arr.reduceRight((sum,x) => sum+x, 0)6

三、排序与反转

方法 作用 是否改变原数组 示例
sort() 排序(默认按 Unicode 码点) [3,1,2].sort()[1,2,3]
reverse() 反转数组顺序 [1,2,3].reverse()[3,2,1]

自定义排序示例

[3, 1, 2].sort((a, b) => a - b); // 升序 → [1, 2, 3]

四、拼接与连接

方法 作用 是否改变原数组 示例
concat() 合并多个数组或值,返回新数组 [1,2].concat([3,4])[1,2,3,4]
join() 将数组元素拼接为字符串 ['a','b'].join('-')"a-b"

五、静态方法与其他

方法 作用 示例
Array.isArray() 检查是否为数组 Array.isArray([1,2])true
includes() 检查是否包含某元素(ES7) [1,2,3].includes(2)true
flat() 扁平化嵌套数组(ES2019) [1,[2,3]].flat()[1,2,3]
flatMap() map()flat(1)(ES2019) [1,2].flatMap(x => [x*2])[2,4]
at() 支持负索引访问元素(ES2022) [1,2,3].at(-1)3

六、不常用的方法

方法 作用 备注
copyWithin() 复制数组部分内容到其他位置(ES6) 用途较少,会修改原数组
fill() 填充数组为固定值 new Array(3).fill(0)[0,0,0]
entries() 返回键值对迭代器 用于 for...of 循环
keys() 返回键名迭代器 同上
values() 返回元素值迭代器 同上

七、注意事项

  1. 改变原数组的方法
    push, pop, shift, unshift, splice, sort, reverse, fill, copyWithin
  2. 纯函数方法(不改变原数组):
    slice, concat, map, filter, reduce 等。
  3. 性能考虑
    • 大规模数据操作时,优先选择 for 循环或 reduce 代替链式调用(如 map().filter())。

代码示例汇总

// 增删改查
const arr = [1, 2, 3];
arr.splice(1, 1, 'a'); // 原数组变 [1, 'a', 3]

// 遍历与转换
const doubled = arr.map(x => x * 2); // [2, 'aa', 6]

// 查找
const hasEven = arr.some(x => x % 2 === 0); // false

// 扁平化
const nested = [1, [2, [3]]];
nested.flat(2); // [1, 2, 3]

掌握这些方法后,可以高效处理大多数数组操作场景!

JS
本作品采用《CC 协议》,转载必须注明作者和本文链接
九九一十八,一步一个脚印
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!