我有一个对象数组:
[
{source: 'A', target : 'C', value: 25},
{source: 'E', target: 'F', value: 5},
{source: 'C', target: 'A', value: 20}, ...
]
如何检测所有反向对,例如源:“A”、目标:“C”和源:“C”、目标:“A”并求和:25 + 20?
最佳答案
首先使用两个 for 循环生成所有可能的对,然后使用 forEach 迭代每个 pari检查源/目标属性是否匹配,如果匹配,则计算总和:
const arr = [
{source: 'A', target : 'C', value: 25},
{source: 'E', target: 'F', value: 5},
{source: 'C', target: 'A', value: 20}
];
const pairs = arr => {
const out = [];
for (let i = 0; i < arr.length - 1; ++i) {
for (let j = i; j < arr.length - 1; ++j) {
out.push([arr[i], arr[j + 1]]);
}
}
return out;
}
pairs(arr).forEach(pair => {
if (pair[0].source === pair[1].target && pair[0].target === pair[1].source) {
console.log(pair[0].value + pair[1].value);
}
});
关于Javascript - 检测对象数组中的反向对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121727/