几个常用 JavaScript 数组方法的小记
title: 几个常用 JavaScript 数组方法的小记 date: 2026-04-12 tag: JavaScript summary: map / filter / reduce 三件套之外,find、some、every 和 flatMap 也很值得整理一下用法。
平时写 JavaScript,最常用的数组方法是 map、filter、reduce 三件套,但其实还有几个方法在合适的场景下可以让代码更短、可读性更好。这里把我自己常用到的几个整理一下。
find 与 findIndex
find 返回第一个匹配项本身,找不到时返回 undefined;findIndex 返回下标,找不到时返回 -1。这两个方法对"找一个"的场景比 filter 后取 [0] 要清楚得多。
const users = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
];
const u = users.find((x) => x.id === 2);
// { id: 2, name: "Bob" }
some 与 every
some 是"至少一个满足",every 是"全部满足",返回布尔值。比起手写 for 循环加 flag 干净很多。
const ok = scores.every((s) => s >= 60); // 是不是全部及格
const fail = scores.some((s) => s < 60); // 有没有人挂科
flatMap
flatMap 等价于 map 后再 flat(1),常见于"一对多"的展开场景,比如把每个用户的所有标签拍平到一个数组:
const allTags = users.flatMap((u) => u.tags);
一点小经验
- 这些方法都不修改原数组(
sort和reverse是例外),写起来比较安全。 reduce可以实现上面所有方法,但代码可读性会打折扣,能用具体方法就用具体方法。- 大数组场景下,链式调用会多次遍历,性能敏感时考虑写成单次
for...of。