首页 > 解决方案 > 对象索引未达到预期的数组

问题描述

我有一个数组

let arr = []

我正在向其中插入一个对象

let a = {name:"a", age: 20}
arr.push(a);

我正在检查下面的索引,并将相同的对象分配给不同的变量

let b = {name:"a", age:20}

我试过了

arr.indexOf(b);

我得到-1,我期望0。

请指导我

标签: javascriptarrays

解决方案


JS 通过引用而不是值来进行对象比较(和搜索)。因此:为了foo == bar正确, 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);


推荐阅读