2016-05-24 6 views
-2

Meine Stammdaten wie folgend ..konvertieren JSON-Daten in ein anderes Format mit Hilfe von Javascript

[{ 
    month: 'Jan', 
    cat: A, 
    val: 20 
},{ 
    month: 'Jan', 
    cat: B, 
    val: 5 
},{ 
    month: 'Jan', 
    cat: C, 
    val: 10 
},{ 
    month: 'Feb', 
    cat: A, 
    val: 30 
},{ 
    month: 'Feb', 
    cat: B, 
    val: 10 
},{ 
    month: 'Feb', 
    cat: C, 
    val: 20 
}] 

Ich brauche es in den folgenden mit Hilfe von JavaScript zu konvertieren ..

[{ 
    month: 'Jan', 
    A: 20, 
    B: 5, 
    C: 10 
}, { 
    month: 'Feb', 
    A: 30, 
    B: 10, 
    C: 20 
}] 

Wenn die Basisdaten nur hatte Katze und val ..

ich so etwas versucht haben könnte ..

data[e.cat] = e.val; 

Aber für Monat Gruppierung hat mich bekommt .. Jede Hilfe sehr zu begrüßen ist ..

+0

http://stackoverflow.com/questions/2722159/javascript-how-to-filter-object-array-based-on-attributes – mplungjan

+0

Welche Anstrengungen haben Sie in diese setzen? Was sind die spezifischen Probleme, denen Sie begegnet sind? Diese Frage scheint eher "ein Problem für mich zu beheben". –

Antwort

5

Dieser Vorschlag bietet Array#forEach mit einem Objekt für den Monat Gruppe.

Das Objekt wird ohne Prototypen oder Eigenschaften erstellt, es ist wirklich leer. Dies kann erforderlich sein, wenn ein Hash den Wert einer Eigenschaft eines nicht leeren Objekts hat.

var array = [{ month: 'Jan', cat: 'A', val: 20 }, { month: 'Jan', cat: 'B', val: 5 }, { month: 'Jan', cat: 'C', val: 10 }, { month: 'Feb', cat: 'A', val: 30 }, { month: 'Feb', cat: 'B', val: 10 }, { month: 'Feb', cat: 'C', val: 20 }], 
 
    grouped = []; 
 

 
array.forEach(function (a) { 
 
    if (!this[a.month]) { 
 
     this[a.month] = { month: a.month }; 
 
     grouped.push(this[a.month]); 
 
    } 
 
    this[a.month][a.cat] = (this[a.month][a.cat] || 0) + a.val; 
 
}, Object.create(null)); 
 

 
document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');

+1

Möchten Sie den 'Object.create (null)' Teil erklären? – mplungjan

+1

@mplungjan, siehe Bearbeiten. –

Verwandte Themen