让我们把 {"src":"A", "target":"B"} 叫做反向对象,对应于 {"src":"B", "target":"A"}。
作为第一步,我想从数组中移除所有的反向对象。
但是我的代码并没有给我期望的结果。
正确的结果应该是:
var reducedArr = [
{"src":"A", "target":"B", "val":"15"},
{"src":"A", "target":"C", "val":"11"},
{"src":"B", "target":"A", "val":"9"},
{"src":"C", "target":"A", "val":"5"},
{"src":"C", "target":"B", "val":"18"},
{"src":"B", "target":"A", "val":"19"}
]
var result= reducedArr
result.forEach(element => {
r = reducedArr.find(e => {return (e.src == element.target && e.target == element.src)});
if(r){
reducedArr = reducedArr.filter(ee => ee !== r)
console.log(reducedArr)
}
});
正确的结果应该是:
[
{"src":"A", "target":"B", "val":"15"},
{"src":"A", "target":"C", "val":"11"},
{"src":"C", "target":"B", "val":"18"},
]
一旦我搞清楚了,我想添加一个条件,即在对象和其反转版本之间,我会保留具有“val”最高值的那个。 因此,理想的最终结果将是:
[
{"src":"A", "target":"C", "val":"11"},
{"src":"C", "target":"B", "val":"18"},
{"src":"B", "target":"A", "val":"19"}
]