javascript - 对象索引未达到预期的数组
问题描述
我有一个数组
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
正确, 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);
推荐阅读
- android - 来自 dumpsys 中列出的显示的 adb screenrecord 辅助显示
- c# - 如何更新设置键的ac#字典,嵌套foreach循环中的值为空
- reactjs - React native Axios Django - Csrf failed referer checks failed no referer
- google-sheets - 如何使用查询将列数据解析为谷歌表格中的行
- html - Jquery 中内置的链接文本在 Razor 页面上不显示可点击的链接
- javascript - 如何清除其闭包函数或承诺之外的区间?
- ruby-on-rails - FactoryBot如何在多个工厂中访问相同的变量
- react-native - 找不到屏幕“用户”的“组件”、“getComponent”或“儿童”道具
- java - 我们如何在春季刷新 AnnotationconfigwebapplicationContext 之前删除/忽略对象?
- reactjs - 状态更改时未更新按钮属性