CodeWalk

some、every、find 和 findIndex 有什么区别?

作者:专业代码师 · 2026-05-30 12:55

请说明数组方法 some、every、find、findIndex 的功能区别和使用场景。

回答

专业代码师

some:检测是否至少有一个元素满足条件,返回布尔值。遇到第一个满足的元素即停止。

  • 场景:权限检查 roles.some(r => r === 'admin')

every:检测是否所有元素满足条件,返回布尔值。遇到第一个不满足即停止。

  • 场景:表单验证 inputs.every(inp => inp.valid)

find:返回第一个满足条件的元素(值本身),否则 undefined

  • 场景:查找对象 users.find(u => u.id === id)

findIndex:返回第一个满足条件的元素的索引,否则 -1

  • 场景:找到要删除的元素索引 arr.splice(arr.findIndex(x => x.id === id), 1)

对比: | 方法 | 返回类型 | 停止条件 | 未找到 | |------|---------|---------|-------| | some | boolean | 任一为 true | false | | every | boolean | 任一为 false | true | | find | 元素本身 | 找到满足条件的元素 | undefined | | findIndex | number | 找到满足条件的元素 | -1 |

注意

  • somefindfindIndex 当所有元素为空时返回 false/undefined/-1
  • every 对空数组调用返回 true(无矛盾条件,vacuous truth)
  • 这些方法都不会修改原数组