如何累加类型为对象数组的JSON集合的属性
高洛峰
高洛峰 2016-11-10 14:46:07
0
3
1175

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

用原生 js 的 for 循环 或 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 },
];


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(3)
三叔
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


学霸
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);


三叔

试试这个

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);


최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿