如何从列表中计算总和 - Typescript - Angular2

Bea*_*Bea 11 typescript angular

TypeScript中的新功能 - Angular 2.

我想知道如何从列表中计算总和.

我已经选择了所需的项目并获得了错误:

TS错误类型'void'不能分配给'Creance []',

creancesOfSelectedRemise: Creance[];

onSelectRemise(remise: Remise, event: any) {
...//...
this.creancesOfSelectedRemise = this.creances
  .filter(c => c.id_remettant === remise.id_remettant)
  .forEach(c => this.totalCreances += c.creance_montant);
}
Run Code Online (Sandbox Code Playgroud)

似乎'forEach'未正确使用.

是否可以同时添加过滤器和forEach?

谢谢Bea

Nit*_*mer 26

您应该使用map来返回要总结的数字,而不是使用forEach,然后使用reduce来对它们求和:

onSelectRemise(remise: Remise, event: any) {
    ...
    this.creancesOfSelectedRemise = this.creances
        .filter(c => c.id_remettant === remise.id_remettant)
        .map(c => c.creance_montant)
        .reduce((sum, current) => sum + current);
}
Run Code Online (Sandbox Code Playgroud)

您可以通过过滤掉映射中的项来删除迭代循环:

onSelectRemise(remise: Remise, event: any) {
    ...
    this.creancesOfSelectedRemise = this.creances
        .map(c => c.id_remettant === remise.id_remettant ? c.creance_montant : 0)
        .reduce((sum, current) => sum + current);
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是旧的,但你不能只是为了'this.creancesOfSelectedRemise = this.creances.reduce((sum,c)=> sum + c.creance_montant,0);`? (3认同)