在 ionic 2 中对 JSON 数组进行分组和求和

Grouping and sum JSON array in ionic 2

我的JSON是这样的

[ 

{t_id :"1",  val1 : "1" ,   title:"cash to purchase",   unit :"bag"},

{t_id :"1"  ,val1 : "1" ,  title:"cash to purchase", unit :"bag"}

{t_id :"1",val1 : "1" , title:"cash to purchase", unit :"bag"}

{t_id :"2",val1 : "4" , title:"offload", unit :"bag"},

{t_id :"2",val1 : "5" , title:"onroad", unit :"bag"},

{t_id :"3", val1 : "5" , title:"Onroad", unit :"bag"},

{t_id :"3", val1 : "6" , title:"Onroad", unit :"bag"},

]

我想按 t_id 分组并根据每个 t_id 找到 val1 的总和..然后我想在我的 HTML 上像

Title:cash to purchase

bag:3

Title:Offload

bag:9

title:onroad

bag:11

创建一个新对象来存储所有 value w.r.t t_id 的总和作为

var groupObj = {};
list.forEach( ele => 
    groupObj[ele.t_id] = groupObj[ele.t_id] ? 
          {title: ele.title, sum: groupObj[ele.t_id].sum + Number(ele.val1)} :
          {title: ele.title, sum: Number(ele.val1) }
);

这将使 groupObj 变为

{
    1: { title: "cash to purchase", sum: 3 },
    2: { title: "onroad", sum: 9 },
    3: { title: "Onroad", sum: 11 }
}

如果您需要进一步的帮助,请添加评论。

给你。端到端完整解决方案:

var array = [{t_id:"1",val1:"1",title:"cash to purchase",unit:"bag"},{t_id:"1",val1:"1",title:"cash to purchase",unit:"bag"},{t_id:"1",val1:"1",title:"cash to purchase",unit:"bag"},{t_id:"2",val1:"4",title:"offload",unit:"bag"},{t_id:"2",val1:"5",title:"onroad",unit:"bag"},{t_id:"3",val1:"5",title:"Onroad",unit:"bag"},{t_id:"3",val1:"6",title:"Onroad",unit:"bag"}];

var grouped = [];

array.forEach(function(o) {
  if (!this[o.t_id]) {
    this[o.t_id] = {
      t_id: o.t_id,
      val1: 0,
      title: o.title
    };
    grouped.push(this[o.t_id]);
  }
  this[o.t_id].val1 += Number(o.val1);
}, Object.create(null));

console.log(grouped);
$scope.results = grouped;

将以下代码复制到您的 HTML:

<ion-content>
  <ion-list>
    <ion-item class="" ng-repeat="result in results">
        <div class="item item-text-wrap">
          Title: {{result.title}}
          <br>
          Bag: {{result.val1}}
        </div>
    </ion-item>
  </ion-list>
</ion-content>