You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中indexOf用箭头函数返回-1而非预期0的问题

问题原因及解决方法

你的代码返回-1的核心问题是**indexOf方法的使用场景错误**:

  • indexOf的作用是查找数组中某个具体值的首次出现位置,它通过**严格相等(===)**来匹配元素。你传入的是一个箭头函数obj=>{return obj.a ==1},数组里的元素都是像{a:1}这样的对象,箭头函数和这些对象完全不是同一个引用,自然匹配失败,返回-1。

要实现“找到第一个a属性等于1的元素的索引”,应该使用findIndex方法——它专门接受回调函数作为参数,遍历数组并返回第一个满足条件的元素索引:

[{a:1},{b:2},{c:3}].findIndex(obj => obj.a === 1)

这段代码会正确返回0,符合你的预期。

补充说明两者差异

  • indexOf:适合简单值(如数字、字符串)的查找,参数是要匹配的具体值。
  • findIndex:适合复杂条件的查找(如对象属性匹配、自定义逻辑),参数是判断条件的回调函数。

内容的提问来源于stack exchange,提问作者zahra aghli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:11:16