JavaScript 中数组的常用操作方法有很多,以下是一些常见的、功能强大的数组方法及其用途和示例:
一、遍历与查找类
| 方法名 | 返回值类型 | 描述 |
|---|
find() | 元素或 undefined | 查找第一个满足条件的元素 |
findIndex() | 索引或 -1 | 查找第一个满足条件的元素索引 |
indexOf() | 索引或 -1 | 查找某个值第一次出现的位置(严格相等) |
lastIndexOf() | 索引或 -1 | 查找某个值最后一次出现的位置 |
includes() | 布尔值 | 判断数组是否包含某个值 |
示例:
const arr = [10, 20, 30, 40];
arr.find(item => item > 25);
arr.findIndex(item => item > 25);
arr.indexOf(30);
arr.includes(20);
二、过滤与映射类
| 方法名 | 返回值类型 | 描述 |
|---|
filter() | 新数组 | 过滤出所有满足条件的元素 |
map() | 新数组 | 对每个元素进行处理并返回新数组 |
reduce() | 单个值 | 累积计算(如求和、对象合并等) |
示例:
const nums = [1, 2, 3];
nums.filter(n => n % 2 === 0);
nums.map(n => n * 2);
nums.reduce((acc, n) => acc + n, 0);
三、判断类
| 方法名 | 返回值类型 | 描述 |
|---|
some() | 布尔值 | 是否有至少一个元素满足条件 |
every() | 布尔值 | 所有元素是否都满足条件 |
示例:
const ages = [18, 20, 16];
ages.some(age => age < 18);
ages.every(age => age >= 18);
四、聚合与排序类
| 方法名 | 返回值类型 | 描述 |
|---|
sort() | 排序后的原数组 | 对数组进行排序(默认按字符串顺序) |
reduceRight() | 单个值 | 从右到左累积计算 |
join() | 字符串 | 将数组转为字符串,可指定连接符 |
示例:
[3, 1, 2].sort();
[1, 2, 3].reduce((acc, val) => acc + val);
['a', 'b', 'c'].join('-');
五、新增/删除/截取类
| 方法名 | 返回值类型 | 描述 |
|---|
slice(start, end) | 新数组 | 截取部分元素,不修改原数组 |
splice(index, deleteCount, ...items) | 被删除的数组 | 删除或添加元素,会修改原数组 |
push(...items) | 新长度 | 添加元素到末尾 |
pop() | 被移除的元素 | 移除最后一个元素 |
shift() | 被移除的元素 | 移除第一个元素 |
unshift(...items) | 新长度 | 添加元素到开头 |
示例:
let arr = [1, 2, 3];
arr.push(4);
arr.pop();
arr.slice(0, 2);
arr.splice(1, 1, 'a');
六、其他实用方法
| 方法名 | 返回值类型 | 描述 |
|---|
forEach() | undefined | 遍历数组执行函数,无返回值 |
flat() | 扁平化后的新数组 | 将嵌套数组扁平化 |
flatMap() | 扁平化后的新数组 | map + flat 的组合 |
keys() / values() / entries() | 迭代器 | 获取键、值、键值对迭代器 |
示例:
[1, [2, [3]]].flat();
[1, [2, [3]]].flat(2);
[1, 2].flatMap(x => [x * 2]);
总结建议:
- 查找元素:优先使用
find / findIndex
- 判断是否存在:使用
some / includes
- 转换数据结构:使用
map
- 筛选数据:使用
filter
- 统计/合并数据:使用
reduce
- 排序/截取/增删元素:使用
sort / slice / splice / push/pop
这些方法在 Vue 组件中常用于处理表格数据、标签匹配、状态管理等场景。