sujon
sujon

Reputation: 367

how to convert nested array of objects to object of array

I have got array of nested array of objects .

  const data = [ {group: [{label:"1"}]}, {topGroup: [{label:"2"}]} ]

I want to convert array to this format of objects and I want to get this output

 let permission ={

       group:["1"],
       topGroup:["2"]
     }

How can I do this ?

Upvotes: 0

Views: 133

Answers (4)

Siva Kondapi Venkata
Siva Kondapi Venkata

Reputation: 11011

Use destructuring and Object.fromEntries.

const data = [{ group: [{ label: "1" }] }, { topGroup: [{ label: "2" }] }];

const permission = Object.fromEntries(
  data.map(item => {
    const [[key, [obj]]] = Object.entries(item);
    return [key, Object.values(obj)];
  })
);

console.log(permission);

Upvotes: 1

Guven Degirmenci
Guven Degirmenci

Reputation: 712

Assuming the data is going to have labels as in that format forever, you could use something like that

const data = [{"group":[{"label":"1"}]},{"topGroup":[{"label":"12"}]}];

// The dict variable under here is the second parameter of reduce that I passed it `{}`.
// The ind variable is the data at the index of the array.
var newData = data.reduce(function(dict, ind){
    // You basically get the keys and the values and put them in place
    // and return the last state to the reduce function.
    dict[Object.keys(ind)] = Object.values(ind)[0][0]["label"];
    return dict;
}, {})

console.log(newData)

Upvotes: 1

Yanjan. Kaf.
Yanjan. Kaf.

Reputation: 1755

const data = [ {group: [{label:"1"}]}, {topGroup: [{label:"2"}]} ]
let permission = {};
data.forEach(val =>{
  for(prop in val){
    permission[prop] = [val[prop][0]["label"]]
  }
})

console.log(permission)

Give this a upvote if this is what you want.

Upvotes: 2

Tan Dat
Tan Dat

Reputation: 3117

const data = [ {group: [{label:"1"}]}, {topGroup: [{label:"2"}]} ]

const converted = data.reduce((a,b) => {
   const onlyKey = Object.keys(b)[0];
   a[onlyKey] = b[onlyKey].map(i => i.label);
   return a;
}, {})

console.log(converted)

Upvotes: 2

Related Questions