javascript - Construiește Json dintr-un array de obiecte


Încerc să folosesc TypeScript pentru a construi un obiect JSON dintr-un array de obiecte ca acesta:[

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

Aș dori să obțin ceva de genul:

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

Dar pur și simplu nu pot să-mi dau seama de funcțiile de ordin superior ca să funcționeze.

Răspuns #1

Ai putea folosi metoda reduce care acceptă ca parametru o funcție callback.

Citește mai multe despre metoda reduce aici.

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);

Răspunsul #2

Ai putea folosi Object.assign în combinație cu 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);

Cu atribuirea prin destructurare

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);