数组的常用方法
一、增删元素
-
push()
- 在末尾添加元素。
- ✅ 修改原数组
- 示例:
arr.push(4) → [1,2,3,4]
-
pop()
- 删除末尾元素。
- ✅ 修改原数组
- 示例:
arr.pop() → [1,2]
-
unshift()
- 在开头添加元素。
- ✅ 修改原数组
- 示例:
arr.unshift(0) → [0,1,2,3]
-
shift()
- 删除开头元素。
- ✅ 修改原数组
- 示例:
arr.shift() → [2,3]
-
splice()
- 删除/替换元素并添加新元素。
- ✅ 修改原数组
- 示例:
arr.splice(1,2,'a') → [1,'a',4]
二、查找元素
-
indexOf()
- 返回第一个匹配元素的索引。
- ❌ 不修改原数组
- 示例:
arr.indexOf(2) → 1
-
includes()
- 判断是否包含某元素(返回布尔值)。
- ❌ 不修改原数组
- 示例:
arr.includes(3) → true
-
find()
- 返回第一个满足条件的元素。
- ❌ 不修改原数组
- 示例:
arr.find(x => x > 2) → 3
-
findIndex()
- 返回第一个满足条件的元素的索引。
- ❌ 不修改原数组
- 示例:
arr.findIndex(x => x > 2) → 2
三、转换处理
-
map()
- 对每个元素执行函数,返回新数组。
- ❌ 不修改原数组
- 示例:
arr.map(x => x*2) → [2,4,6]
-
filter()
- 过滤符合条件的元素,返回新数组。
- ❌ 不修改原数组
- 示例:
arr.filter(x => x < 3) → [1,2]
-
reduce()
- 累积计算,返回单个值。
- ❌ 不修改原数组
- 示例:
arr.reduce((a,b) => a+b) → 6
-
slice()
- 截取子数组。
- ❌ 不修改原数组
- 示例:
arr.slice(1,3) → [2,3]
四、排序与反转
-
sort()
- 排序数组(默认按字符串排序)。
- ✅ 修改原数组
- 示例:
arr.sort((a,b) => a-b) → [1,2,3]
-
reverse()
- 反转数组。
- ✅ 修改原数组
- 示例:
arr.reverse() → [3,2,1]
五、其他实用方法
-
forEach()
- 遍历数组(无返回值)。
- ❌ 不修改原数组
- 示例:
arr.forEach(x => console.log(x))
-
every()
- 检查所有元素是否满足条件(返回布尔值)。
- ❌ 不修改原数组
- 示例:
arr.every(x => x < 4) → true
-
some()
- 检查至少一个元素满足条件(返回布尔值)。
- ❌ 不修改原数组
- 示例:
arr.some(x => x > 2) → true
六、ES6+ 新增方法
-
Array.from()
- 将类数组对象或可迭代对象转为数组。
- 示例:
Array.from('abc') → ['a','b','c']
-
Array.of()
- 创建新数组(避免
new Array() 的歧义)。
- 示例:
Array.of(1,2,3) → [1,2,3]
-
flat()
- 展平嵌套数组。
- 示例:
[1,[2,3]].flat() → [1,2,3]
关键提示
- ✅ 表示修改原数组,❌ 表示不修改原数组。
- 优先使用
map()/filter() 替代 for 循环,提升代码可读性。
splice() 功能强大,但需注意索引和参数的顺序。