2016-04-10 8 views
0

Ich habe ein JSON-Array von DB, und ich möchte es manipulieren. Momentan hat es diskrete 8 Elemente, ich möchte das Array manipulieren, um 2 Elemente zu erhalten, Restelemente werden geschachtelt. Meine aktuelle JSON hat diese Struktur:JSON-Array-Daten bearbeiten

{ 
    "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 
    }] 
} 

möchte ich die Daten manipuliert werden, so kommen:

{ 
"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 
    }, 
} 

ich für jede Schleife verwende, aber diese einzelnen Elemente schafft, will ich nur zwei Elemente im resultierenden Array. Jede Lösung wird geschätzt.

+3

Ihre gewünschte/Ausgabe 'Datenstruktur/Schema' scheint fehlerhaft zu sein. Bitte korrigiere es. Sollte es "[{" Typ ":" A "," desc ": [{...}, {...}]}, {...}]' sein? – sarbbottam

Antwort

1

Man könnte so etwas wie dies versuchen:

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/

Wenn Sie die Typen nicht wissen, werden Sie, Sie dynamisch das Objekt bauen:

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

Sie haben einige Syntaxfehler in y unser Code, wie Sie {} sowohl für Array s und Object s verwenden, so würde ich aus dem Zusammenhang erraten. Sie benötigen ein paar Schleifen, damit die Daten genau so aussehen, wie Sie möchten.

Siehe JSFiddle.