Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Build Json from an array of objects

I'm trying to use typescript to build a json object from an array of objects like this one:[

[
  { attribute: 'a', modifier: 121 },
  { attribute: 'b', modifier: 67 },
  { attribute: 'c', modifier: 121 },
  { attribute: 'd', modifier: 67 } 
]

I would like to get something like:

{
  a:  121,
  b:  67,
  c:  121,
  d:  67  
}

But I just can't get my head around the high order functions to make it work.

like image 819
Xhark Avatar asked Jan 29 '23 13:01

Xhark


2 Answers

You could use reduce method which accepts as parameter a callback function.

Read more about reduce method here.

let array=[
  { attribute: 'a', modifier: 121 },
  { attribute: 'b', modifier: 67 },
  { attribute: 'c', modifier: 121 },
  { attribute: 'd', modifier: 67 } 
];
let obj=array.reduce(function(obj,item){
  obj[item.attribute] = item.modifier;
  return obj;
},{});
console.log(obj);
like image 151
Mihai Alexandru-Ionut Avatar answered Feb 03 '23 07:02

Mihai Alexandru-Ionut


You could use Object.assign in combination with Array#map.

var array = [{ attribute: 'a', modifier: 121 }, { attribute: 'b', modifier: 67 }, { attribute: 'c', modifier: 121 }, { attribute: 'd', modifier: 67 }],
    result = Object.assign(...array.map(o => ({ [o.attribute]: o.modifier })));

console.log(result);

With destructuring assignment

var array = [{ attribute: 'a', modifier: 121 }, { attribute: 'b', modifier: 67 }, { attribute: 'c', modifier: 121 }, { attribute: 'd', modifier: 67 }],
    result = Object.assign(...array.map(({ attribute, modifier }) => ({ [attribute]: modifier })));

console.log(result);
like image 31
Nina Scholz Avatar answered Feb 03 '23 08:02

Nina Scholz