这是另一种可能性,它正在使用Array.forEach,因此您需要有一个现代浏览器或使用其中的许多“垫片”/“polyfills”。
Javascript
var first = [21, 18],
second = [
[21, 1000],
[21, 500],
[18, 100],
[18, 200]
],
store = {};
result = [];
first.forEach(function (element) {
second.forEach(function (pair) {
var value;
if (pair[0] === element) {
value = store[element] || 0;
store[element] = value + pair[1];
}
});
if (typeof store[element] === "number") {
result.push([element, store[element]]);
}
});
console.log(result);
在jsfiddle 上
更新:这是基于更新问题的解决方案,这也使用Object.keys和Array.map将对象转换为 OP 请求的数组格式。
Javascript
var first = [
[21, 1000],
[21, 500],
[18, 100],
[18, 200]
],
store = {};
result;
first.forEach(function (pair) {
store[pair[0]] = (store[pair[0]] || 0) + pair[1];
});
result = Object.keys(store).map(function (key) {
return [parseInt(key, 10), store[key]];
});
console.log(result);
在jsfiddle 上