javascript - 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 ?
解决方案
首先使用两个 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);
}
});
推荐阅读
- c++ - 如何判断 directory_entry 是否是 C++ 中 directory_iterator 的结尾
- linux - 无法访问损坏的文件
- c# - 如何获取 DataGridView 中两个特定单元格的值并将它们存储在变量中
- scip - 用于惰性约束和预求解的约束处理程序
- c# - 带有 SSL 和 ASP.NET 的 ERR_CONNECTION_RESET
- java - Spring Data MongoDB Aggregation 返回空数据,但在 Compass 上使用相同的管道
- swift - applicationDidFinishLaunching 没有被触发
- r - gtsummary 中具有计算数据集/加权计数的交叉表
- c++ - 如何读取带有 ESP32 中断和全局标志的旋转编码器
- python-3.x - 音乐机器人的音量只会下降,但不会上升