所以,这里的问题是我想在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个元素以获得两个不同的值。
答案 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);