【问题标题】:Angular JS - How can I sum json array value?Angular JS - 如何对 json 数组值求和?
【发布时间】:2017-12-22 08:15:58
【问题描述】:

如何对 JSON 数组数据中的 totalItem 数量求和?

[{"group": "B", "totalItem": 1},
{"group": "A", "totalItem": 1},
{"group": "C", "totalItem": 2},
{"group": "B", "totalItem": 3},
{"group": "A", "totalItem": 6},
{"group": "C", "totalItem": 2},]

鉴于上面的例子,我怎样才能总结所有totalItem在角度上具有相同的组?

【问题讨论】:

  • 你用谷歌搜索过吗?很抱歉粗鲁,但这是很常见的问题。
  • Angular 与此无关。这只是简单的 JavaScript/逻辑。了解循环和数组操作。并尝试一下。

标签: javascript arrays json angular


【解决方案1】:

简单如“美好的一天”

let counters = myArray.reduce((p,n) => {
  if(p[n.group]) { p[n.group] += n.totalItem; }
  else { p[n.group] = n.totalItem; }
  return p;
}, []);

这是 Javascript 中常见的 groupBy。首先,您在数组上有 reduce 函数:它通过数组并执行您想要的任何操作。

第一个参数是一个函数,它将执行您所要求的操作,第二个参数是起始值。

所以在这里,您从一个空数组[] 开始。

然后,您迭代您的项目。我已经命名了 2 个变量,p 用于上一个(将在最后返回的值),n 用于下一个(数组的当前对象)。

条件说:

如果数组中的组存在,则将 totalItem 添加到它。如果没有,则使用 totalItem 的值创建它。

最后,您有一个包含所有组的关联数组!

【讨论】:

  • 解释一下就好了。
  • 这是一个 Javascript groupBy 函数。这很常见,我认为不需要解释。但我会说的,因为你问了。
  • 为什么使用[]作为初始值?您的意思肯定是 {}。此外,缺少一个花括号。
  • 不,我的意思是[]。这是一个关联的值数组,如解释中所述。但可以肯定的是,您可以使用{},无论您的船是什么。
【解决方案2】:

这是一种您可以了解该过程的方法。

var totals = {};   //This object will have the sums of each group

//Go through your array
myArray.forEach(function(item){   

    if (typeof totals[item.group] === 'undefined')     
        totals[item.group] = item.totalItem            //Create a new group item in the result object
    else                                               
        totals[item.group] += item.totalItem;          //Item is there - so aggregate the value

})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 2015-09-18
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多