我有一个数组
let arr = []
我正在向其中插入一个对象
let a = {name:"a", age: 20}
arr.push(a);
我正在检查下面的索引,并将相同的对象分配给不同的变量
let b = {name:"a", age:20}
我试过了
arr.indexOf(b);
我得到 -1,我期望 0。
请指导我
最佳答案
JS 通过引用而不是值来进行对象比较(和搜索)。因此:要使 foo == bar
为 true,foo 和 bar 必须是同一个对象,而不仅仅是具有相同属性和值的对象:
console.log({name:"a", age:20} == {name:"a", age:20});
因此,您需要像 findIndex 这样的东西,而不是 indexOf。
let arr = [];
let a = {name:"a", age: 20};
arr.push(a);
let b = {name:"a", age:20}
const index = arr.findIndex(item => item.name === b.name && item.age === b.age);
console.log(index);
关于javascript - 具有对象索引的数组未按预期获得,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55701727/