首页 > 解决方案 > 在angular2中查找具有相同名称的对象数组的值的总和

问题描述

我有一个要求,我需要在具有相同名称的不同对象中找到 amt 的值的总和。下面是代码片段

traveler = [
  {  description: 'Senior', Amount: 50},
   {  description: 'Senior', Amount: 50},
   {  description: 'Adult', Amount: 75},
   {  description: 'Child', Amount: 35},
   {  description: 'Infant', Amount: 25 },
];

在这里,我想计算具有相同描述的不同对象中 Amount 的总和。例如:对象 0 和 1 包含相同的描述“高级”,因此总 amt 为 100

如何在angular2中实现这一点?

我应该使用内部forloops还是有更好的方法?请帮我

标签: javascript

解决方案


您可以使用 aMap来收集值并使用分组结果呈现对象数组。

var traveler = [{ description: 'Senior', amount: 50 }, { description: 'Senior', amount: 50 }, { description: 'Adult', amount: 75 }, { description: 'Child', amount: 35 },  { description: 'Infant', amount: 25 }],
    grouped = Array.from(
        traveler.reduce(
            (m, { description, amount }) => m.set(description, (m.get(description) || 0) + amount),
            new Map
        ).entries(),
        ([description, amount]) => ({ description, amount })
    );
    
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读