← 返回首页

几个常用 JavaScript 数组方法的小记


title: 几个常用 JavaScript 数组方法的小记 date: 2026-04-12 tag: JavaScript summary: map / filter / reduce 三件套之外,find、some、every 和 flatMap 也很值得整理一下用法。

平时写 JavaScript,最常用的数组方法是 mapfilterreduce 三件套,但其实还有几个方法在合适的场景下可以让代码更短、可读性更好。这里把我自己常用到的几个整理一下。

find 与 findIndex

find 返回第一个匹配项本身,找不到时返回 undefinedfindIndex 返回下标,找不到时返回 -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);

一点小经验

  • 这些方法都不修改原数组(sortreverse 是例外),写起来比较安全。
  • reduce 可以实现上面所有方法,但代码可读性会打折扣,能用具体方法就用具体方法。
  • 大数组场景下,链式调用会多次遍历,性能敏感时考虑写成单次 for...of