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
相关产品推荐
相关产品推荐

