为了账号安全,请及时绑定邮箱和手机立即绑定

在对象数组中查找对象的索引

在对象数组中查找对象的索引

哆啦的时光机 2022-01-20 18:56:14
我有这个arr = [{name: 'pippo',lastname: 'p'},{name: 'mickey',lastname: 'mouse'}]x ={name: 'mickey', lastname: 'mouse'}arr.indexOf(x)为什么 arr.indexOf(x) 返回 -1?是否有另一种解决方案可以在对象数组中查找对象的索引?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

由于您有对象数组,因此无法直接使用indexOf()来获取该数组中该特定对象的索引。您需要使用findIndex()这样,当数组中有匹配的对象时,它会返回该对象的相应索引,否则-1。


arr = [{name: 'pippo',lastname: 'p'},{name: 'mickey',lastname: 'mouse'}]

x ={name: 'mickey', lastname: 'mouse'}

console.log(arr.findIndex((obj) => obj.name == x.name && obj.lastname === x.lastname));


查看完整回答
反对 回复 2022-01-20
?
弑天下

TA贡献1818条经验 获得超8个赞

indexOf() 检查数组内对象的引用。由于您正在创建一个新对象并将其作为参数传递给 indexOf() 它与数组内对象的引用不匹配,因此它失败了。


let arr = [{name: 'pippo',lastname: 'p'},{name: 'mickey',lastname: 'mouse'}]

arr.indexOf(arr[1])

而此代码将按预期返回 1,因为引用相同。


@Ankit 给出的解决方案


arr = [{name: 'pippo',lastname: 'p'},{name: 'mickey',lastname: 'mouse'}]

x ={name: 'mickey', lastname: 'mouse'}

console.log(arr.findIndex((obj) => obj.name == x.name && obj.lastname === x.lastname));


查看完整回答
反对 回复 2022-01-20
?
慕少森

TA贡献2019条经验 获得超9个赞

使用简单循环


arr = [{name: 'pippo',lastname: 'p'},{name: 'mickey',lastname: 'mouse'}]

x ={name: 'mickey', lastname: 'mouse'}



for(let i=0;i< arr.length;i++){

  if(JSON.stringify(arr[i])===JSON.stringify(x))

   console.log(i)

}


查看完整回答
反对 回复 2022-01-20
  • 3 回答
  • 0 关注
  • 729 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号