当且仅当前两个位置相同时,在数组内合并子数组(并添加第三个位置)

时间:2017-10-29 18:24:29

标签: javascript lodash

我有一个子数组数组:

[ ["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工作)

1 个答案:

答案 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; }