如何使用ngrx和Typescript将具有相等值的属性中的列表项加入

时间:2018-08-01 13:30:41

标签: typescript ngrx

让我说说我的状态列表:

list: SomeObj[];

其中:

SomeObj: {name: string, val: number}

然后在SomeObj []中有以下项目:

{name: Alice,  val: 1}
{name: Bob,    val: 2}
{name: Bob,    val: 2}
{name: Conrad, val: 3}

我如何订阅以下内容:

{name: Alice,  val: 1}
{name: Bob,    val: 4}
{name: Conrad, val: 3}

在val属性上求和的同时加入name属性。

1 个答案:

答案 0 :(得分:1)

您需要创建一个选择器,将选择器按名称分组:

getSumByName = createSelector(
 state => state.list,
 list => groupBy(list, name)
  )

您可以在此处阅读如何实现groupBy函数:

What is the most efficient method to groupby on a JavaScript array of objects?