数组遍历
ES5/ES6 提供了一整套「高阶遍历方法」,它们都接收一个回调函数,比 for 循环更声明式。核心六个必须熟练:forEach(纯遍历)、map(加工每个元素,返回等长新数组)、filter(筛选,返回满足条件的子集)、find/findIndex(找第一个满足条件的元素/下标)、reduce(累积计算成一个值)、some/every(是否存在 / 是否全都满足)。
选方法的思路:要「每个都做一件事」用 forEach;要「变成另一组数据」用 map;要「挑出一部分」用 filter;要「汇总成一个结果」(求和、求最大、拼对象)用 reduce。
这些方法返回的都是新数组/新值,不修改原数组,因此可以链式调用:arr.filter(...).map(...) 一行搞定「先筛选再加工」,这是实际项目里最常见的组合。
本节要点map 返回等长新数组,filter 返回子集,reduce 汇总成一个值,some/every 做布尔判断;这些方法都不改原数组,可以链式组合。
JavaScript
const scores = [85, 42, 90, 66]; // forEach:纯遍历,无返回值 scores.forEach((s, i) => console.log('第' + i + '个:' + s)); // map:加工每个元素 → 等长新数组 console.log(scores.map(s => s * 2)); // filter:筛选满足条件的 → 新数组 console.log(scores.filter(s => s >= 60)); // [85, 90, 66] // find / findIndex:找第一个满足的 console.log(scores.find(s => s < 60)); // 42 console.log(scores.findIndex(s => s < 60)); // 1 // reduce:累积成一个值(0 是初始值) const total = scores.reduce((acc, s) => acc + s, 0); console.log('总分:' + total); // some / every:有一个满足 / 全都满足 console.log(scores.some(s => s > 89)); // true console.log(scores.every(s => s > 60)); // false // 链式调用:先筛选再加工 console.log( scores.filter(s => s >= 60).map(s => '分数' + s) );
📚 推荐阅读
来自万象云档的免费在线书籍,点击封面直接阅读




