所以我想让我的二维数组具有重复值(如下所示)以合并电子邮件地址相同的位置。电子邮件将始终处于相同位置。
[['john.doe@example.com', 64], ['john.doe@example.com', 65], ['jane.doe@example.com', 66]]
我希望我能得到以下结果:
[['john.doe@example.com', 64, 65], ['jane.doe@example.com', 66]]
我不认为数组会有大量的值,所以如果答案不是非常有效,那也不是一个交易破坏者。
编辑:
这是我尝试过的,它对我有用。
早些时候有人发布了这个答案,我真的很喜欢它,但后来它被删除了。所以我要贴出来看看别人怎么想。我不拿道具!
var a = [['john.doe@example.com', 64], ['john.doe@example.com', 65], ['jane.doe@example.com', 66]];
var map = {};
for(var i=0; i<a.length; i++) {
if(a[i][0] in map) {
map[a[i][0]].push(a[i][1]);
} else {
map[a[i][0]] = [a[i][1]];
}
}
console.log(map);
第一部分实际删除重复项并转换为具有数组中数字的对象。
a.length = 0;
for(var p in map) {
a.push([p].concat(map[p]));
}
console.log(a);
第二部分是可选的。它将对象转换回数组。
不知道是谁发布的,但我喜欢这样做的方式。