javascript - 如何累加类型为对象数组的JSON集合的属性,在线等
PHP中文网
PHP中文网 2017-04-11 11:55:04
[JavaScript讨论组]

如何将类型为对象数组的 json 集合 arr 中的 price 属性累加计算,生成 obj_1arr_1

用原生 jsfor 循环 或 underscore 如何实现?

var arr = [
    { id:1, name: '商户1', price: 400 },
    { id:3, name: '商户3', price: 200 },
    { id:2, name: '商户2', price: 100 },
    { id:1, name: '商户1', price: 200 },
    { id:4, name: '商户4', price: 800 },
    { id:2, name: '商户2', price: 600 },
    { id:1, name: '商户1', price: 400 }
];

var obj_1 = {
    1: { name: '商户1', price: 1000 },
    2: { name: '商户2', price: 700 },
    3: { name: '商户3', price: 200 },
    4: { name: '商户4', price: 800 },
}

var arr_1 = [
    { id:1, name: '商户1', price: 1000 },
    { id:2, name: '商户2', price: 700 },
    { id:3, name: '商户3', price: 200 },
    { id:4, name: '商户4', price: 800 },
];
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(4)
大家讲道理

试试这个

var reduced = arr.reduce(function(p, item) {
    if (p[item.id]) {
        p[item.id].price += item.price;
    } else {
        p[item.id] = {name: item.name, price: item.price};
    }
    return p;
}, {});

console.log(reduced);
迷茫
var sum = 0,arr_1=[...],arr_2=[...],arr_3=[...];
function counter(obj){
    obj.forEach(function(item){
        sum+=item.price;
    })
}
counter(arr_1);
counter(arr_2);
counter(arr_3);
伊谢尔伦

这种情况通常都可以用数组的reduce方法实现。
参考这里 reduce方法

array.reduce(callback,initvalue);

如果你最终想得到一个Object,那initvalue就传一个 {}
如果你最终想得到一个Array,那initvalue就传一个 []

巴扎黑
var arr = [
    { id:1, name: '商户1', price: 400 },
    { id:3, name: '商户3', price: 200 },
    { id:2, name: '商户2', price: 100 },
    { id:1, name: '商户1', price: 200 },
    { id:4, name: '商户4', price: 800 },
    { id:2, name: '商户2', price: 600 },
    { id:1, name: '商户1', price: 400 }
];

var count = 0
var arr_1 = []
var obj_1 = []
for(var i=0;i<arr.length;i++){
  var el_id = arr[i].id
  var el_name = arr[i].name
  if(el_id==1){
    count += arr[i].price
  }
  var obj = {}
  obj.id = el_id
  obj.name = el_name
  obj.price = count
  arr_1[el_id-1] = obj

  obj_1[el_id] = {name:el_name, price: count}
}
console.log(arr_1)
console.log(obj_1)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号