javascript - JS 在对象数组上使用indexOf

标签 javascript arrays object object-equality

我想对对象数组使用indexOf()。例如:

var arr;
var arr[0] = {a: 1, b: 2};
var arr[1] = {a: 1, b: 3};
var obj = {a: 1, b: 2};

console.log(arr.indexOf(obj));

这将打印 -1,因为 arr[0] 不等于 obj。我怎样才能做到这一点(即打印 0)?

最佳答案

您必须比较属性。像这样的事情会起作用:

var arr = [];
arr[0] = {a: 1, b: 2};
arr[1] = {a: 1, b: 3};

console.log(arr.findIndex(o => o.a === 1 && o.b === 2));
//0
console.log(arr.findIndex(o => o.a === 1 && o.b === 3));
//1

关于javascript - JS 在对象数组上使用indexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618128/

相关文章:

javascript - 显示总计(保留 2 位小数)

arrays - 如何在 Bash 中将字符串拆分为数组?

php - 在 array_walk_recursive 函数之后获取父数组名称

javascript - jQuery 切换开关复选框 - 更改 "checked"属性延迟

javascript - 从数组中删除最小值,但如果重复只删除一次

c++ - char 数组的 cin 和 cin.get() 之间的区别

java - 我们可以在 java.lang.Object 中添加额外的方法吗?

javascript - Object.defineProperty get/set 闭包

javascript - 如何将数据推送到带有键和值的数组中?

javascript - 使用 Javascript/Jquery 的本地存储(不使用 HTML5)