#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.