我没有进一步将以下对象与附加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"(我希望是一个(
- id多久一次取值2(我预计是两次(
有人能帮我吗?或者能给我一个如何解决这些问题的好提示吗?我试过使用过滤器,但我认为我做错了什么:
value1.filter( val1 => val1.includes(id))
然后我再也无法将其与值2:/进行比较
首先,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);
- id多久出现一次value2(我希望有两次(
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);