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));
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));
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)
}
添加回答
举报
