javascript - 无法对对象的属性求和

标签 javascript

我有不同的对象包含这个属性:

{ products: [{ choosen: "1" }] }
{ products: [{ choosen: "2" }] }
{ products: [{ choosen: "3" }] }

我想对选择的属性求和,所以在这种情况下目标应该是:6。

我做了什么:

var total= 0;

$.each(objects, function(i, obj){
    total+= obj.products.reduce(function(a, b){
        return a + b.choosen;
   });
});

console.log(total);

这个返回:0[对象对象]

最佳答案

使用 Array#reduce 和解构。还将字符串转换为数字。

const data = [{ products: [{ choosen: "1" }] },
{ products: [{ choosen: "2" }] },
{ products: [{ choosen: "3" }] }]

const res = data.reduce((a,{products})=>{
  return a+products.reduce((a2,{choosen})=>a2+Number(choosen), 0);
}, 0);

console.log(res);

备选方案:

const data = [{ products: [{ choosen: "1" }] },
{ products: [{ choosen: "2" }] },
{ products: [{ choosen: "3" }] }]

const res = data
.map(({products})=>products)
.flat()
.reduce((a,{choosen})=>{
  return a+Number(choosen);
}, 0);

console.log(res);

关于javascript - 无法对对象的属性求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54653320/

相关文章:

javascript - 无法使用 npm 5.6.0 安装 cordova

javascript - React native paper TextInput in Modal,输入一个字符后光标向后闪烁

javascript - Kinetic js保存 Canvas 阶段

javascript - D3 从线到区域的过渡开始时填充颜色错误

javascript - 为什么我不能调用 action 来调度?

javascript - Bootstrap Multiselect - 没有单选按钮的单选

javascript - JSX 中的 lambda 是如何工作的?

javascript - Twitter Bootstrap 2.0.1 可切换选项卡无法正确执行

javascript - 如何更改游标以在表加载时等待

javascript - 正则表达式排除某些标签