如何在2D数组中使用id值拆分和捕获元素?

时间:2017-11-09 07:10:42

标签: javascript arrays math

所以,这里的问题是我想在javascript中操作2D数组。

例如:

arr = [
[1, 1, 0, 5],
[1, 2, 2, 6],
[1, 3, 4, 7],
[1, 4, 6, 8],
[2, 1, 1, 1],
[2, 2, 3, 2],
[2, 3, 5, 3],
[2, 4, 7, 4]

];

在这个数组中,有8个不同的元素。现在我想实现,在数组中使用第一个和第二个元素。我想区分id 1和2 [1]或b / w 1-4 [2],并用此来添加第3个元素以获得两个不同的值。

1 个答案:

答案 0 :(得分:0)

您可以为第一个元素获取哈希表,并汇总所有其他值。



var array = [[1, 1, 0, 5], [1, 2, 2, 6], [1, 3, 4, 7], [1, 4, 6, 8], [2, 1, 1, 1], [2, 2, 3, 2], [2, 3, 5, 3], [2, 4, 7, 4]],
    hash = Object.create(null),
    result = array.reduce(function (r, a) {
        if (!hash[a[0]]) {
            hash[a[0]] = [a[0], 0];
            r.push(hash[a[0]]);
        }
        hash[a[0]][1] += a[2];
        return r;
    }, []);

console.log(result);




如果您愿意,您只能使用哈希表。这包括检查空数组。



var array = [[], [1, 1, 0, 5], [1, 2, 2, 6], [1, 3, 4, 7], [1, 4, 6, 8], [2, 1, 1, 1], [2, 2, 3, 2], [2, 3, 5, 3], [2, 4, 7, 4]],
    result = Object.create(null);

array.forEach(function (a) {
    if (a.length) {
        result[a[0]] = (result[a[0]] || 0) + a[2];
    }
});

console.log(result);