Javascript - 检测对象数组中的反向对

标签 javascript arrays

我有一个对象数组:

[
{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/

相关文章:

javascript - 删除重复的 </li> 标签

javascript - 这在 JavaScript : array[n] = true; 中有什么作用

android - 我想编写一个动态添加 View 的类,如按钮或 TextView 或

java - 使用堆栈的迷宫中的老鼠 (Java)

PHP - 如果 URL 中有此内容,则不显示 div

javascript - D3.JS:如何制作线条动画

javascript - 将 JSX 代码存储到 Javascript 变量中的正确方法(如果可能)

javascript - document.getElementsByTagName ('head' )[0] 可以返回 null 吗?

javascript - 如何循环遍历对象数组中的数组

c - malloc、calloc 和动态数组