Build Json from an array of objects
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);
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);
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);
try this.
var arr = [ { attribute: 'a', modifier: 121 }, { attribute: 'b', modifier: 67 }, { attribute: 'c', modifier: 121 }, { attribute: 'd', modifier: 67 } ]var map = {};arr.forEach( function(item){ map[ item.attribute ] = item.modifier });console.log( JSON.stringify( map, 0, 4 ) )