2017-07-24 22 views
-4

Ich möchte die Struktur meines JavaScript-Objekts in ein anderes ändern. Mein Problem ist, dass für jedes Objekt, muss ich schaffen bis zu drei verschiedene Objekte:So ändern Sie die Objektstruktur

Meine Eingang:

[ 
    {date: "21-05", cash: "500", card: "200", points: "100"}, 
    {date: "26-05", card: "100", points: "50"} 
] 

gewünschte Ausgabe:

[ 
    {date: "21-05", amount: "500", paymentType: cash }, 
    {date: "21-05", amount: "200", paymentType: card }, 
    {date: "21-05", amount: "200", paymentType: points }, 
    {date: "26-05", amount: "100", paymentType: card }, 
    {date: "26-05", amount: "50", paymentType: points } 
] 

Bargeld, Karte, Punkt sind global const

+3

Was haben Sie versucht? Schleife darüber und schiebe drei neue Objekte auf ein Array. – Prinzhorn

+2

Beide Beispiele sind ungültige JSON. – Quentin

+0

'date:" 21-05 ",' ist nicht JSON. In JSON muss ein Schlüssel in Anführungszeichen eingeschlossen werden. Die Objekte, die Sie anzeigen, sind JavaScript-Objekte. JSON in JavaScript eine stringurierte Darstellung von Daten, so dass JSON-Daten immer vom Typ string sind. –

Antwort

0

Sie könnten das Array und die Schlüssel iterieren und prüfen, ob nicht date, dann mit den Daten um ein neues Objekt bauen. Sammeln, bis alle Objekte besucht sind.

var data = [{ date: "21-05", cash: "500", card: "200", points: "100" }, { date: "26-05", card: "100", points: "50" }], 
 
    result = data.reduce(function (r, o) { 
 
     Object.keys(o).forEach(function (k) { 
 
      if (k !== 'date') { 
 
       r.push({ date: o.date, amount: o[k], paymentType: k }); 
 
      } 
 
     }); 
 
     return r; 
 
    }, []); 
 
    
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

Sie können ein paar for Schleifen dafür verwenden:

const data = [ 
 
    {date:"21-05", cash: "500", card:"200", points:"100"}, 
 
    {date: "26-05", card:"100", points:"50"} 
 
]; 
 

 
const result = []; 
 
for (let row of data) { 
 
    for (let key in row) { 
 
     if (key !== 'date') { 
 
      result.push({ 
 
       data: row.date, 
 
       amount: row[key], 
 
       paymentType: key 
 
      }); 
 
     } 
 
    } 
 
} 
 

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

Verwandte Themen