首页 > 解决方案 > Javascript - 检测对象数组中的反向对

问题描述

我有一个对象数组:

[
{source: 'A', target : 'C', value: 25}, 
{source: 'E', target: 'F', value: 5}, 
{source: 'C', target: 'A', value: 20}, ...
]

如何检测所有反向对,例如 source: 'A', target: 'C' 和 source: 'C', target: 'A' 并求和值: 25 + 20 ?

标签: javascriptarrays

解决方案


首先使用两个 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);
  }
});


推荐阅读