我有一个数组数组,其数据如下:
[[0,1],[0,2],[0,3],[1,1]]
我想要的是一个看起来像的对象: {0:[1,2,3], 1:[1]}
我试过了:
var obj = {};
$.each(List, function(index, value) {
obj[value[0]] = value[2];
});
但它显然会覆盖密钥的先前值。是否有一种简单的方法可以将所有值添加到每个唯一键(有点像字典)?
答案 0 :(得分:3)
这将测试该属性是否存在。如果没有,它会创建它并分配数组。
一旦属性和数组存在,它就可以推送值。
var obj = {};
$.each(List, function(index, value) {
if( !obj[value[0]] )
obj[value[0]] = [];
obj[value[0]].push(value[1]);
});
如果您执行此操作,则可以在创建阵列时避免.push()
调用...
var obj = {};
$.each(List, function(index, value) {
if( !obj[value[0]] )
obj[value[0]] = [value[1]];
else
obj[value[0]].push(value[1]);
});
请记住,如果您需要保证迭代的顺序,则应使用数组而不是对象。
var arr = [];
$.each(List, function(index, value) {
if( !arr[value[0]] )
arr[value[0]] = [value[1]];
else
arr[value[0]].push(value[1]);
});