2017-07-23 4 views
0

Ich denke, ich sollte keine Probleme damit haben, aber ich bin. Ich versuche, die Syntax/Variablen eines JSON-Objekts zu einem bestimmten Parameter zu wechseln. HierVersuchen, JSON-Objekt zu ändern/anzupassen

ist die JSON mit denen ich arbeite:

{ 
    "name":"BHPhotovideo", 
    "prices":[ 
     { 
     "price":"799.00", 
     "createdAt":"2017-07-23T16:17:11.000Z", 
     "updatedAt":"2017-07-23T17:21:41.000Z" 
     }, 
     { 
     "price":"770.00", 
     "createdAt":"2017-07-21T16:17:11.000Z", 
     "updatedAt":"2017-07-23T16:17:11.000Z" 
     }, 
     { 
     "price":"599.00", 
     "createdAt":"2017-07-19T16:17:11.000Z", 
     "updatedAt":"2017-07-22T16:17:11.000Z" 
     }, 
     { 
     "price":"920.00", 
     "createdAt":"2017-07-22T16:17:11.000Z", 
     "updatedAt":"2017-07-22T16:17:11.000Z" 
     } 
    ] 
}, 
etc... 

ich gerade versuche, die Daten zu erhalten, wie diese formatiert werden:

{ 
    "label":"BHPhotoVideo", // Same as name 
    "data":[ 
     { 
     "x":"2017-07-23T16:17:11.000Z", // Same as createdAt 
     "y":799 // Same as price 
     }, 
     { 
     "x":"2017-07-21T16:17:11.000Z", 
     "y":770 
     }, 
     { 
     "x":"2017-07-19T16:17:11.000Z", 
     "y":599 
     }, 
     { 
     "x":"2017-07-22T16:17:11.000Z", 
     "y":920 
     } 
    ] 
}, 
etc... 

Die Menge an Diese Objekte sind dynamisch/Änderungen unterworfen, ich habe ein Chaos aus foreach Schleifen und versuche, dies zusammen zu setzen. Ich komme immer wieder zu Fehlern. Wie kann ich das am besten angehen?

+1

Zeigen Sie uns, was Sie versucht haben. Dies ist eine ziemlich einfache Umwandlung –

+0

Mögliches Duplikat von https://StackOverflow.com/Questions/13518762/change-Key-Na-Nested-JSon-Struktur – abagshaw

Antwort

2

Was ist damit?

data.map(
    (item) => ({ 
     "label":"BHPhotoVideo", // Same as name 
     "data": item.prices.map(nested => ({ 
     "x":nested.createdAt, 
     "y":nested.price 
     })) 
    }) 
) 
+0

Wow, Data Mapping ist eine Sache. Keine Ahnung, wie ich das vermisst habe. Das ist perfekt, hat es ein bisschen verändert und es ist perfekt für meine Anwendung. VIELEN DANK! –

+0

'' '' '' viel Glück! –

0

Wollten Sie, dass die y-Werte ganze Zahlen sind?

var ar = [ 
 
    { 
 
     "name":"BHPhotovideo", 
 
     "prices":[ 
 
     { 
 
      "price":"799.00", 
 
      "createdAt":"2017-07-23T16:17:11.000Z", 
 
      "updatedAt":"2017-07-23T17:21:41.000Z" 
 
     }, 
 
     { 
 
      "price":"770.00", 
 
      "createdAt":"2017-07-21T16:17:11.000Z", 
 
      "updatedAt":"2017-07-23T16:17:11.000Z" 
 
     }, 
 
     { 
 
      "price":"599.00", 
 
      "createdAt":"2017-07-19T16:17:11.000Z", 
 
      "updatedAt":"2017-07-22T16:17:11.000Z" 
 
     }, 
 
     { 
 
      "price":"920.00", 
 
      "createdAt":"2017-07-22T16:17:11.000Z", 
 
      "updatedAt":"2017-07-22T16:17:11.000Z" 
 
     } 
 
     ] 
 
    }, 
 
    { 
 
     "name":"Adorama", 
 
     "prices":[ 
 
     { 
 
      "price":"799.00", 
 
      "createdAt":"2017-07-22T16:17:11.000Z", 
 
      "updatedAt":"2017-07-23T17:21:41.000Z" 
 
     }, 
 
     { 
 
      "price":"799.00", 
 
      "createdAt":"2017-07-20T16:17:11.000Z", 
 
      "updatedAt":"2017-07-23T16:17:11.000Z" 
 
     }, 
 
     { 
 
      "price":"810.00", 
 
      "createdAt":"2017-07-18T16:17:11.000Z", 
 
      "updatedAt":"2017-07-22T16:17:11.000Z" 
 
     }, 
 
     { 
 
      "price":"799.00", 
 
      "createdAt":"2017-07-17T16:17:11.000Z", 
 
      "updatedAt":"2017-07-22T16:17:11.000Z" 
 
     } 
 
     ] 
 
    } 
 
]; 
 

 

 
var out = ar.map(function(a) { 
 
    return { 
 
     "label" : a.name, 
 
     "prices" : a.prices.map(function(aa) { return {x: aa.createdAt, y: aa.price} }) 
 
    } 
 
}); 
 
console.log(out);

0

map über die ursprüngliche Anordnung ein geändertes Objekt zurückkehrt; Rückgabe des Namens und ein neues Array von map über die Preise.

const obj2 = obj.map((item) => { 
    return { 
    label: item.name, 
    data: item.prices.map((data) => { 
     return { 
     x: data.createdAt, 
     y: data.price 
     } 
    }) 
    } 
}); 

DEMO