对json数据进行分组统计

hfyanzi 2016-12-22 10:34:04
原json data = [
{"companyName": "A",
"orderAmt": 100, "Qty": 1},
{"companyName": "A",
"orderAmt": 200, "Qty": 3},
{"companyName": "B",
"orderAmt": 400, "Qty": 5},
{"companyName": "B",
"orderAmt": 200, "Qty": 5},
];
根据 companyName进行分组统计,相同公司名的 orderAmt和Qty相加,希望得到以下结果,如何操作。
data1 = [
{"companyName": "A",
"orderAmt": 300, "Qty": 4},
{"companyName": "B",
"orderAmt": 600, "Qty": 10},
];

谢谢了!
...全文
998 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangbai333 2016-12-22
  • 打赏
  • 举报
回复

var data  = [
  {"companyName": "A","orderAmt": 100, "Qty": 1},
  {"companyName": "A","orderAmt": 200, "Qty": 3},
  {"companyName": "B","orderAmt": 400, "Qty": 5},
  {"companyName": "B","orderAmt": 200, "Qty": 5},
  {"companyName": "B","orderAmt": 200, "Qty": 5}
];


var arr = [], temp = {};

while ( data.length ) {
    var obj = data.pop();

   console.log(temp[obj["companyName"]])

    if ( temp[obj["companyName"]] === undefined ) {
        temp[obj["companyName"]] = arr.length;
        arr.push(obj);
    } else {
        arr[temp[obj["companyName"]]].orderAmt += obj.orderAmt;
        arr[temp[obj["companyName"]]].Qty+= obj.Qty;
    }
}
functionsub 2016-12-22
  • 打赏
  • 举报
回复
var data  = [
  {"companyName": "A","orderAmt": 100, "Qty": 1},
  {"companyName": "A","orderAmt": 200, "Qty": 3},
  {"companyName": "B","orderAmt": 400, "Qty": 5},
  {"companyName": "B","orderAmt": 200, "Qty": 5}
];
  
var map = {};
var res = [];
for(var i=0;i<data.length;i++){
  var name = data[i].companyName;
  if(!map[name]){
    map[name] = {
      companyName : name,
      orderAmt : 0,
      Qty : 0
    }
    res.push(map[name]);
  }
  for(var p in map[name]){
    if(p != 'companyName'){
      map[name][p] += data[i][p];
    }
  }
}
console.log(res)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧