我有一个子数组数组:
[ ["a","b",54],["b","c",89],["b","c",84],["c","b",78],["a","b",83],["a","c",87] ]
我想合并子数组(并将第3个位置编号(第2个索引)加在一起)IF和ONLY如果前两个位置完全相同。
我要找的结果是:
[ ["a","b",137],["b","c",173],["c","b",78],["a","c",87] ]
(数组中子数组的最终顺序并不重要)
我该怎么做?
编辑:不需要使用lodash(但是,我个人无法使用lodash工作)
答案 0 :(得分:1)
您可以通过迭代数组来获取哈希表的强大功能并构建新的结果集。
var array = [["a", "b", 54], ["b", "c", 89], ["b", "c", 84], ["c", "b", 78], ["a", "b", 83], ["a", "c", 87]],
hash = Object.create(null),
result = [];
array.forEach(function (a) {
var key = a.slice(0, 2).join('|');
if (!hash[key]) {
result.push(hash[key] = a.slice());
return;
}
hash[key][2] += a[2];
});
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }