【发布时间】:2014-01-22 16:40:15
【问题描述】:
我有一个项目需要我添加多个数组的值,不一定都是相同的长度。
我有 8 个长度可变的数组:
p1 = [1,5,6,8,3,8,]
p2 = [3,3,3,2,8,3,3,4]
p3 = [1,2,3,4,5,6,7,8,9]
p4 = [1,3,4,5,6,7,2,0,2,8,7]
等等。
我需要做的是将相同的键值添加在一起以创建 1 个“结果”数组,如下所示:
结果 = [6, 13, 16, 19, 22, 24, 12, 12, 11, 8, 7]
我在 Stackoverflow 上找到了一些代码,它们在大多数浏览器中都能很好地完成这项工作,IE8 除外。
Javascript merge 2 arrays and sum same key values
这是适用于大多数浏览器的代码:
var sums = {}; // will keep a map of number => sum
[p1, p2, p3, p4, p5, p6, p7, p8].forEach(function(array) {
//for each pair in that array
array.forEach(function(pair) {
// increase the appropriate sum
sums[pair[0]] = pair[1] + (sums[pair[0]] || 0);
});
});
// now transform the object sums back into an array of pairs, and put into array named 'results'...
var results = [];
for(var key in sums) {
results.push([key, sums[key]]);
}
问题(我认为)是 IE8 不支持 forEach。有没有办法在不使用 forEach 的情况下使用纯 Javascript 或 jQuery 来做到这一点?
【问题讨论】:
标签: javascript jquery arrays internet-explorer-8