如何解决JS - 比较具有附加 ID 的对象
我无法再将以下对象与附加 ID 进行比较:
let id = 123
conterForCompareObjects = 0
conterForHitsValue2 = 0
value1: {
'0': [999],'3': [123]
}
value2: {
'0': {id: 999,something: "ABC"},'1': {id: 000,something: "DEF"},'2': {id: 123,something: "GHI"},'3': {id: 123,something: "JKL"}
}
我想计算两个不同的东西:
- 同一位置的 id 多久出现一次(在我的示例中,此对象中的编号为“3”(我希望有一个)
- value2 中的 id 多久出现一次(我希望有两个)。
有人可以帮助我或者可以给我一个很好的提示,我可以如何解决这个问题?我尝试使用过滤器,但我认为我做错了什么:
value1.filter( val1 => val1.includes(id))
然后我没有进一步将它与 value2 进行比较:/
解决方法
首先,filter
方法不能用于 Object
,它是 Array
的属性。
请注意以下是通用解决方案。它将为所有键计数。因此,请根据您的需要使用或修改它。
- 同一位置的 id 多久出现一次(在我的示例中,此对象中的编号为“3”(我希望有一个)
命中数将始终为 1,因为我们只检查 ID 是否存在于两个对象中。
let compareMap = new Map();
let conterForCompareObjects = new Map();
for(let postion in value1){
let id = value1[position][0];
compareMap.set(position,id);
}
for(let position in value2){
let id1 = compareMap.get(position);
if(id1 !== undefined){
let id2 = value2[position]['id'];
if(id2 === id1){
conterForCompareObjects.set(id2,1);
} else conterForCompareObjects.set(id2,0); // or don't,in that case it's `undefined`
}
}
let someID = <SOME ID IN value2>
let hitForSomeID = conterForCompareObjects.get(someID);
- value2 中的 id 多久出现一次(我希望有两个)。
let conterForHitsValue2 = new Map();
for(let position in value2){
let id = value2[position]['id'];
let count = conterForHitsValue2.get(id);
if(count === undefined){
conterForHitsValue2.set(id,0);
} else {
conterForHitsValue2.set(id,count + 1);
}
}
let someID = <SOME ID IN value2>
let hitForSomeID = conterForHitsValue2.get(someID);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。