如果存在重复值,则Javascript合并数组

Ter*_*rry 4 javascript

var arr = [[7,50],[7,60],[8,40]];

如何合并这个数组成为这样的结果?[[7,110],[8,40]];

让我们说如果我有超过数百个由数组包装的较小数组

buz*_*ypi 5

我建议您使用映射来存储结果而不是数组.这是一个O(n)解决方案:

var arr = [[7,50], [7,60], [8,40]];

function merge_array(arr) {
    var map = {};
    for (var i = 0;i<arr.length;i++) {
        if (arr[i][0] in map) {
            map[arr[i][0]] += arr[i][1];
        } else {
            map[arr[i][0]] = arr[i][1];
        }
    }

    return map;
}
Run Code Online (Sandbox Code Playgroud)

如果您将数组作为输出设置为死,则可以转换它.