我想合并并添加以下2D数组:
var arr = [
["TWENTY", 20],
["TWENTY", 20],
["TWENTY", 20],
["TWENTY", 20],
["TEN", 10],
["FIVE", 5],
["ONE", 1],
["QUARTER", 0.25],
["QUARTER", 0.25],
["DIME", 0.1],
["DIME", 0.1],
["PENNY", 0.01],
["PENNY", 0.01],
["PENNY", 0.01],
["PENNY", 0.01]
];
生成的二维数组如下所示:
arr = [
["TWENTY", 80],
["TEN", 10],
["FIVE", 5],
["QUARTER", 0.50],
["DIME", 0.20],
["PENNY", 0.04]
];
基本上,我是将数字值加起来并压缩字符串值。我尝试了map,reduce和for循环,但是这一步让我很困惑。
您真正需要的只是一个reduce和一个map,这可能会成为一个很好的MapReduce笑话。
var arr = [
["TWENTY", 20],
["TWENTY", 20],
["TWENTY", 20],
["TWENTY", 20],
["TEN", 10],
["FIVE", 5],
["ONE", 1],
["QUARTER", 0.25],
["QUARTER", 0.25],
["DIME", 0.1],
["DIME", 0.1],
["PENNY", 0.01],
["PENNY", 0.01],
["PENNY", 0.01],
["PENNY", 0.01]
];
var obj = arr.reduce(function (out, el) {
out[el[0]] = (out[el[0]] || 0) + el[1];
return out;
}, {});
var out = Object.keys(obj).map(function (key) {
return [key, obj[key]]
}); //[["TWENTY",80],["TEN",10],["FIVE",5],["ONE",1],["QUARTER",0.5],["DIME",0.2],["PENNY",0.04]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句