2016-04-10 156 views
0

我有一個來自數據庫的JSON數組,我想操縱它。目前它具有謹慎的8個元素,我希望數組操作它以獲得2個元素,其餘元素將被嵌套。我現在的JSON具有這樣的結構:操縱JSON數組數據

{ 
    "itemId": 1, 
    "desc": [{ 
    "type": "A", 
    "size": "xx", 
    "count": 12, 
    "price": 122 
    }, 
    { 
    "type": "A", 
    "size": "xl", 
    "count": 18, 
    "price": 180 
    }, 
    { 
    "type": "B", 
    "size": "xx", 
    "count": 12, 
    "price": 122 
    }, 
    { 
    "type": "B", 
    "size": "xl", 
    "count": 12, 
    "price": 122 
    }] 
} 

我想對數據進行操作來這樣的:

{ 
"type": "A", 
    "desc":{ 
    "size": "xx", 
    "count": 12, 
    "price": 122 
    }, 
    { 
    "size": "xl", 
    "count": 12, 
    "price": 122 
    }, 
}, 
    { 
"type": "B", 
    "desc":{ 
    "size": "xx", 
    "count": 12, 
    "price": 122 
    }, 
    { 
    "size": "xl", 
    "count": 12, 
    "price": 122 
    }, 
} 

我使用的每一個循環,但是這是建立單獨的元素,我只想要結果數組中的兩個元素。 任何解決方案,將不勝感激。

+3

您所需/輸出的'data-structure/schema'似乎格式錯誤。請糾正它。它應該是'[{「type」:「A」,「desc」:[{...},{...}]},{...}]'? – sarbbottam

回答

1

你可以嘗試這樣的事:

var new_data = { 
    A: {type: 'A', desc: []}, 
    B: {type: 'B', desc: []} 
}; 

$.each(data.desc, function(index, value) { 
    new_data[value.type].desc.push(value); 
}); 

https://jsfiddle.net/5cnaxn04/

如果你不知道你會得到的類型,可以動態生成對象:

var new_data = {}; 

$.each(data.desc, function(index, value) { 
    if(typeof new_data[value.type] === "undefined") { 
    new_data[value.type] = {type: value.type, desc: [value]} 
    } else { 
    new_data[value.type].desc.push(value); 
    } 
}); 

https://jsfiddle.net/5cnaxn04/1/

0

在y中有一些語法錯誤我們的代碼,因爲您使用{}Array s和Object s,所以我會從上下文中猜測。您需要幾個循環才能使數據看起來完全符合您的要求。

請參閱JSFiddle