2013-01-13 66 views
0

我有一个对象样本data如何使用for循环创建JavaScript对象?

[Object, Object, Object] 
    0: Object 
    test_id: "1" 
    area: "high" 
    1: Object 
    test_id: "1" 
    area: "saw" 
    2: Object 
    test_id: "2" 
    area: "look" 

我试图通过test_id分组,以创建新的对象。

var obj = new Object(); 
$.each(data, function(k, v){ 
    obj[v.test_id] += {area: v.area}; 
}); 

这似乎并没有工作,它仅返回一个对象行...

我试图得到类似:

1: { 
    {area: "high"} 
    {area: "saw"} 
} 
2: { 
    {area: "look"" 
} 

什么想法?谢谢

+1

男人,你是在这几行代码中做一些疯狂的东西! :) –

+4

@JohnDoe总有一种方法使事情变得复杂:) – Patrioticcow

回答

1

编辑后,我注意到了一些东西,你试图创建一个没有名字的属性的JavaScript对象,这不是格式。在JSON(javascript对象表示法)中,每个属性都必须有一个值,你试图存储的更适合一个数组。

相反,将其推到一个数组

$.each(data, function(k, v){ 
    obj[v.test_id].area.push(v.area); 
}); 

只记得创建OBJ [v.test_id]第一,它的区域属性设置为[]。 这导致:

1: { 
    area: ["high","saw"] 
} 
3: { 
    area: ["look"] 
} 

另外,如果你愿意考虑使用下划线对其具有非常强大的(但基本)收集方法,你可能想看看http://underscorejs.org/#groupBy

+0

我编辑过。我的意思是这些对象也是......但我想我总是可以将你的数组转换回对象 – Patrioticcow

+0

Javascript对象是关键值对,代码没有太多意义,如{1:{{area:“high”} ,{area:“high”}}},但是,数组更有意义,可以使用{1:[{area:“high”},{area:“high”}}],这将是一个带有称为“1”的属性包含对象数组,每个对象都有一个区域属性 –