为了账号安全,请及时绑定邮箱和手机立即绑定

在多个子数组中使用脚本减少函数

在多个子数组中使用脚本减少函数

喵喔喔 2022-09-29 10:22:54
我试图计算值计数,如果通用=== 在多个子数组下为真,但我没有成功如何使用java脚本减少函数来获得总计4总和应为 4,因为只有 4 个对象具有共同点 === trueconst obj = {  "A": [    [      {        "count": "1.00",        "common": false      },{        "count": "1.00",        "common": true      }    ],    [      {        "count": "1.00",        "common": false      },      {        "count": "1.00",        "common": true      }    ]  ],  "B": [    [      {        "count": "1.00",        "common": false      },{        "count": "1.00",        "common": true      }    ],    [      {        "count": "1.00",        "common": false      },      {        "count": "1.00",        "common": true      }    ]  ]};let total = Object.values(obj).reduce((acc, value) => acc + value.reduce((a,b) => a+b.reduce((c,d) => c + (d.common) ? parseInt(d.count) : 0,0),0), 0); 
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

您将嵌套数组作为对象的值,您需要两个内部循环来获取所需的求和属性


const

    obj = { A: [[{ count: "1.00", common: false }, { count: "1.00", common: true }], [{ count: "1.00", common: false }, { count: "1.00", common: true }]], B: [[{ count: "1.00", common: false }, { count: "1.00", common: true }], [{ count: "1.00", common: false }, { count: "1.00", common: true }]] },

    total = Object

        .values(obj)

        .reduce((r, outer) => {

            outer.forEach(inner =>

                inner.forEach(({ common, count }) => r += common ? +count : 0)

            );

            return r;

        }, 0);


console.log(total); // 4


查看完整回答
反对 回复 2022-09-29
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

另一种方法是使用以下方法拼合数组,然后应用:concatreduce


const obj = {

  "A": [

    [{"count": "1.00", "common": false}, {"count": "1.00", "common": true}],

    [{"count": "1.00", "common": false}, {"count": "1.00", "common": true}]

  ],

  "B": [

    [{"count": "1.00", "common": false}, {"count": "1.00", "common": true}],

    [{"count": "1.00", "common": false}, {"count": "1.00", "common": true}]

  ]

};


const sum = [].concat(...([].concat(...Object.values(obj))))

  .reduce(( acc, cur ) => acc + (cur.common ? +cur.count : 0), 0)


console.log(`Total count = ${sum}`);


查看完整回答
反对 回复 2022-09-29
?
隔江千里

TA贡献1906条经验 获得超10个赞

这是另一种方式


const obj = {

  "A": [

    [

      {

        "count": "1.00",

        "common": false

      },{

        "count": "1.00",

        "common": true

      }

    ],

    [

      {

        "count": "1.00",

        "common": false

      },

      {

        "count": "1.00",

        "common": true

      }

    ]

  ],

  "B": [

    [

      {

        "count": "1.00",

        "common": false

      },{

        "count": "1.00",

        "common": true

      }

    ],

    [

      {

        "count": "1.00",

        "common": false

      },

      {

        "count": "1.00",

        "common": true

      }

    ]

  ]

};


let total = 0;

Object.values(obj).forEach(c => c.forEach(arr => total += arr.filter(o => o.common).length));

console.log("Total: " + total);


查看完整回答
反对 回复 2022-09-29
  • 3 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号