Сопоставьте массив по значению

#typescript

Вопрос:

У меня есть массив объектов, которые я хочу суммировать по условию.

 [{amount:100, prefix:'a'},{amount:50, prefix:'b'},{amount:70, prefix:'a'},{amount:100, prefix:'b'}]  

Есть ли способ сопоставить значения, например, у меня будет две суммы, одна из которых равна 170, с префиксом «a» и одна из 150 с префиксом «b»?

Комментарии:

1. не могли бы вы объяснить это немного подробнее?

2. @Kektuto Предполагая, что у меня есть массив, я хотел бы суммировать его по значению каждого префикса. Сумма всех сумм с префиксом » a «равна 170, 100 70 , а сумма всех сумм с префиксом» b «равна 150, так как есть два объекта с префиксом «b», один из которых имеет сумму 100, а другой-50

3. @user3150947 какого результата вы ожидаете?

4. {‘a’ : 170, ‘b’: 150}

Ответ №1:

 const result = [{amount:100, prefix:'a'},{amount:50, prefix:'b'},{amount:70, prefix:'a'},{amount:100, prefix:'b'}].reduce(  (acc, {amount, prefix}) =gt; {  return {  ...acc,  [prefix]: acc[prefix]   amount  }    }, {a: 0, b: 0} );   console.log(result) 

Ответ №2:

 function compute_sums(acc, curr) {  if (acc[curr['prefix']]) {  acc[curr['prefix']]  = curr['amount']  } else {  acc[curr['prefix']] = curr['amount']  }  return acc; } const arr = [{amount:100, prefix:'c'}, {amount:100, prefix:'a'},{amount:50, prefix:'b'},{amount:70, prefix:'a'},{amount:100, prefix:'b'}]; const answer = arr.reduce(compute_sums, {}); console.log(answer); 

Аналогичный ответ Али, но мой будет вычислять суммы для любого префикса, а не только для a и b.