2013-01-13 65 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」的屬性包含對象數組,每個對象都有一個區域屬性 –