Javascript多维数组:添加值
所以我有一个多维数组,如:
myArr = [["venue",2],["venue",16],["inning",2],["inning",4],["inning",32],["hithard", 4]]
我想添加类似的值。 所以最后我只有:
"venue" = 18, "inning" = 38, and "hithard" = 4.
你能给我一个如何实现这个目标的例子吗? 使用Javascript和/或jQuery
谢谢!
我不确定你是否想要一个数组或对象。 如果是object,则停止它是第一遍并且下面代码中的tmp
应该返回对象作为Object { venue=18, inning=38, hithard=4}
。
DEMO
var tmp = {}, keys; for (var i = 0; i < myArr.length; i++) { keys = myArr[i][0]; tmp[keys] = (tmp.hasOwnProperty(keys))? (tmp[keys] + myArr[i][1]):myArr[i][1]; } //tmp - will return you a Object { venue=18, inning=38, hithard=4} var output = []; for (keys in tmp) { output.push([keys, tmp[keys]]); } //output will return you an array as [["venue", 18],["inning", 38],["hithard", 4]]
myArr = [["venue",2],["venue",16],["inning",2],["inning",4],["inning",32],["hithard", 4]]; values = {}; for (i=0;i
演示: http : //jsfiddle.net/Ta97E/2/
您可以使用值来创建查询字符串
检查此代码:
var final = {}; for (var i in myArr) { var item = myArr[i]; final[item[0]] = (final[item[0]] || 0) + item[1]; } console.log(final);
演示: http : //jsfiddle.net/UVJEb/
下划线解决方案:
sums = _.reduce(myArr, function (obj, item) { obj[item[0]] = (obj[item[0]] || 0) + item[1]; return obj; }, {}); // sums = {"venue":18,"inning":38,"hithard":4}
jQuery有点脏
sums = {} $.each(myArr, function (i, value) { sums[value[0]] = (sums[value[0]] || 0) + value[1]; });
编辑:添加jQuery版本