swaroop sg
swaroop sg

Reputation: 73

formatting dynamic json array

I have an json array as follows:

Maindata=[
  {"name":"string1"},
  {"name":"string2"},
  {"name":"string3"}
 ];

what I need is an array of following type:

data=[
  {
   "name":"string1",
   "name":"string2",
   "name":"string3"
  }
 ];

can anybody help me with some methods to obtain required json from original array. (note: maindata is json array formed dynamically thats why its structure is like that)

Thanks in advance

Upvotes: 0

Views: 89

Answers (3)

Vladu Ionut
Vladu Ionut

Reputation: 8193

You can use Array.forEach or Array.reduce to iterate though the items of the Maindata object and for each item you can iterate through its keys(using Object.keys) and group the data into a new structure.(See the below snippet)

Solution using Array.forEach

var Maindata=[
  {"name1":"string1"},
  {"name2":"string2"},
  {"name3":"string3"}
 ];
 var result = {};
 var newMaindata=[];
 Maindata.forEach(function(el){
 Object.keys(el).forEach(function(key){
 result[key]=el[key];
 });
 });
 newMaindata.push(result);
 
 console.log(newMaindata);

Solution using Array.reduce

var Maindata = [{
  "name1": "string1"
}, {
  "name2": "string2"
}, {
  "name3": "string3"
}];
var result ;
var newMaindata = [];
result = Maindata.reduce(function(acc,el) {
  Object.keys(el).forEach(function(key) {
    acc[key] = el[key];
  });
  return acc;
},{});
newMaindata.push(result);

console.log(newMaindata);

Upvotes: 0

RaR
RaR

Reputation: 3233

With reduce, you can do like following

    var Maindata = [{
      "name1": "string"
    }, {
      "name2": "string"
    }, {
      "name3": "string"
    }];

    var finalObj = Maindata.reduce((acc, cur) => {
      Object.assign(acc, cur);
      return acc;
    }, {})

    console.log(finalObj);

Upvotes: 0

Nina Scholz
Nina Scholz

Reputation: 386883

You could use Object.assign and spread the array elements.

var array = [{ name1: "string1" }, { name2: "string2" }, { name3: "string3" }],
    object = Object.assign({}, ...array);
    
console.log(object);

Upvotes: 2

Related Questions