前端数组遍历的 “六把钥匙”:解锁 forEach、map、filter、some、every、find 六法核心差异(一)

IT疑难杂症诊疗室 10w+人浏览 692人参与

数组方法三类记忆法(前端高频必记)

遍历执行类:forEach()(无返回值)

核心:单纯遍历数组,执行回调操作,不产生返回值(类似 for 循环的简化版)。能获取每一项 item 和索引 index,仅用于“做操作”(如打印、修改外部变量)。

const arr = [1, 2, 3];
// 箭头函数简写:遍历打印每一项及索引
arr.forEach((item, index) => {
  console.log(`索引${index}:${item}`);
});
// 索引0:1
// 索引1:2
// 索引2:3

处理转换类:filter()map()(返回新数组)

核心:基于原数组处理,返回新数组(不修改原数组),兼具遍历能力。

filter():筛选符合条件的元素(“条件过滤”)
新数组仅包含回调返回 true 的元素,长度可能小于原数组。

const arr = [1, 2, 3];
// 过滤出不等于2的元素
const newArr = arr.filter(item => item !== 2);
console.log(newArr); // [1, 3](原数组不变)

map():映射转换每一项(“一对一转换”)
新数组长度与原数组一致,元素为回调返回的转换后的值。

const arr = [1, 2, 3];
// 每一项拼接字符串
const newArr1 = arr.map(item => `${item}映射后`);
console.log(newArr1); // ["1映射后", "2映射后", "3映射后"]

条件判断类:some()every()find()(返回特定值)

核心:基于条件判断,返回布尔值或具体元素,找到结果后可能提前终止遍历。

some():判断“是否存在至少 1 个符合条件的元素”(返回 boolean)。

const arr = [1, 2, 3];
// 数组中是否有值为2的元素?
console.log(arr.some(item => item === 2)); // true(找到即停)

every():判断“是否所有元素都符合条件”(返回 boolean)。

const arr = [1, 2, 3];
// 数组中所有元素都是2吗?
console.log(arr.every(item => item === 2)); // false(有一个不符合即停)

find():返回“第一个符合条件的元素”(无则返回 undefined)。

const data = [{ id: 1, name: 'haha' }, { id: 2, name: 'hehe' }];
// 找到id=1的对象
console.log(data.find(v => v.id === 1)); // {id:1, name:'haha'}(找到即停)

总结
  • 遍历用 forEach
  • 转换/筛选用 map/filter
  • 判断/查找用 some/every/find
    按需选用可提升代码效率和可读性。

公众号:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bugcom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值