首页 > 解决方案 > 从 reduce [Angular] 返回对象

问题描述

我想返回一个带有reduce函数的对象列表。我想要一个对象列表,例如:

[{project: nameProj, hours: numProj}, {project: nameProj, hours: numProj},{project: nameProj, hours: numProj}]

实际上我只返回一个对象,其中键是项目名称,值是小时:

{
Name1: 9,
Name2: 10,
Name3: 30,
}

我如何从reduce函数返回对象列表?

我的实际代码是:


this.activities$
        .pipe(map((e) => e.map((e) => e)))
        .subscribe((e) => (this.dati = e));
      this.aggregated = this.dati.reduce((acc: DataTable[], activity) => {
        const projectName = `${activity.project?.customer.name} - ${activity.project?.name}`;

        acc[projectName] = (acc[projectName] ?? 0) + activity.hours;
        return acc
        });
      }, {});

标签: javascriptangulartypescriptrxjs

解决方案


试试这个。它将键作为数组获取。

let sourceObj = {
 Name1: 9,
 Name2: 10,
 Name3: 30,
}

let formattedObj = Object.keys(sourceObj).map(k => { return { project: k, hours: sourceObj[k] } })

推荐阅读