JavaScript: Convert object structure

  • A+
Category:Languages

I have an object like this:

{   "A": [ "-4927","8779","-9971","-23767" ],   "B": [ "-10617","-1456","3131","259" ],   "C": [ "-5185","1168","21501","18989" ],   "D": [ "2010","5664","2148","-674" ] } 

I want to convert to this:

[   {     name: 'A',     data: ["-4927","8779","-9971","-23767"]   }, {     name: 'B',     data: ["-10617","-1456","3131","259"]   }, {     name: 'C',     data: ["-5185","1168","21501","18989"]   }, {     name: 'D',     data: ["2010","5664","2148","-674"]   } ] 

I have used this following method:

var newData = []; $.each($.parseJSON(data), function(k, v) {   newData['name'] = k;   newData['data'] = v; }); 

But it only store the last key pair value as newData. That is

name: 'D', data: ["2010","5664","2148","-674"] 

I understand that it overwrite the previous data and store only the last data it get. But i can't solve this problem.

Any Help ?

 


You are assigning the properties name and data directly to newData instead of pushing an object into it as an array:

Change your loop to this:

var newData = []; $.each($.parseJSON(data), function(k, v) {         const myNewData = {             name: k,             data: v         }         newData.push(myNewData); }); 

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: