0

Ich habe Objektarray, aber ich möchte seine Array erstellen: Objektformat wie:Wie erstellt man ein mehrdimensionales Array in angular2 mit Objektdaten?

[ 
{"name":"A1","type":"type1"}, 
{"name":"A2","type":"type1"}, 
{"name":"A3","type":"type1"}, 
{"name":"A4","type":"type1"}, 
{"name":"B1","type":"type2"}, 
{"name":"C1","type":"type3"}, 
{"name":"D1","type":"type4"}, 
{"name":"D2","type":"type4"} 

]

Ergebnis Format wie:

["type1"=>[A1,A2,A3,A4],"type2"=>[B1],"type3"=>[C1],"type3"=>[D1,D2]] 

Antwort

0

Sie das Array mit Array#forEach laufen könnte und verwenden Sie ein Objekt mit dem Typ als Schlüssel.

var data = [{ "name": "A1", "type": "type1" }, { "name": "A2", "type": "type1" }, { "name": "A3", "type": "type1" }, { "name": "A4", "type": "type1" }, { "name": "B1", "type": "type2" }, { "name": "C1", "type": "type3" }, { "name": "D1", "type": "type4" }, { "name": "D2", "type": "type4" }], 
 
    grouped = {}; 
 

 
data.forEach(function (a) { 
 
    grouped[a.type] = grouped[a.type] || []; 
 
    grouped[a.type].push(a.name); 
 
}); 
 

 
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Es funktioniert für mich !! Danke Nina Scholz !! – Techie

0

Man könnte dies auch mit einem reduce

.reduce((prev, cur) => { 
    if (prev.hasOwnProperty(cur.type)) 
    prev[cur.type].push(cur.name); 
    else 
    prev[cur.type] = [cur.name]; 

    return prev; 
}, {}); 

Das Schöne an diesem Ansatz tun gibt es keine Notwendigkeit für zusätzliche Variablen aus dem Anwendungsbereich des reduzieren ist, Es gibt einfach Ihr gruppiertes Objekt zurück.

siehe fiddle

Verwandte Themen