Crazzay1903
Crazzay1903

Reputation: 45

Array of dictionaries to a single array of dictionary in javascript

I have a javascript array as

arr = [{"class":"a"},{"sub_class":"b"},{"category":"c"},{"sub_category":"d"}]

I want a new array as:

new_arr = [{"class":"a", "sub_class":"b", "category":"c", "sub_category":"d"}]

Is it possible to do this in Javascript without using a for loop to iterate through arr?

Upvotes: 0

Views: 781

Answers (3)

Jacob
Jacob

Reputation: 78848

You can use Object.assign:

const array = [{
  "class": "a"
}, {
  "sub_class": "b"
}, {
  "category": "c"
}, {
  "sub_category": "d"
}]

const mergedObject = Object.assign({}, ...array);

// And put in an Array if that was intentional
const newArray = [mergedObject];

console.log(newArray);

Upvotes: 6

Nonik
Nonik

Reputation: 655

You can try this.

var arr = [{"class":"a"},{"sub_class":"b"},{"category":"c"},{"sub_category":"d"}];
var res=[];
var res1=[];
res=Object.assign(...arr);
res1.push(res);

console.log("Result: ",res1);

Upvotes: 1

Federico Alecci
Federico Alecci

Reputation: 914

I think that you want to merge objects. You could either use a spread operator or Object.assign. I don't see the point of having a single object inside an array. Considering your requirements you could do:

const merged = arr.reduce((list, curr) => {
   return Object.assign({}, list, curr);
}, {});

const newArr = [merged];

Upvotes: 1

Related Questions