我有一个数组数组,其数据如下:
[[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];
});
但它显然会覆盖密钥的先前值。有没有一种简单的方法可以将所有值添加到每个唯一键(有点像字典)?
这将测试该属性是否存在。如果没有,它会创建它并分配数组。
一旦属性和数组存在,它就可以推入值。
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]);
});