javascript - 具有对象索引的数组未按预期获得

标签 javascript arrays

我有一个数组

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/

相关文章:

php - 通过触发提交按钮之一来提交 jquery 中的表单

javascript - 无论 "src"是什么,img 总是损坏?

c++ - 如何交换数组中 Min 和 Max 的位置?

javascript - 拼接然后修改数组

javascript - jquery 内联属性值

javascript - Python 3.4,如何在网站上执行Javascript并捕获结果? (就像在浏览器中显示的那样)

javascript - 输入字段中的背景问题

java - 如何从数组中为 Jtextfield 设置文本?

arrays - 结构体数组成员地址问题

python - 从索引对创建倍数的元组