我有一个来自DB的JSON数组,我希望它可以操作。目前它有谨慎的8个元素,我希望数组操纵它来获得2个元素,其余的元素将被嵌套。我目前的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
},
}
我正在使用每个循环,但这是创建单个元素,我只想在结果数组中有两个元素。 任何解决方案将不胜感激。
答案 0 :(得分: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);
}
});
答案 1 :(得分:0)
您的代码中存在一些语法错误,因为您{}
和Array
都使用了Object
,因此我会从上下文中猜测。您需要一些循环才能使数据完全符合您的要求。
请参阅JSFiddle。