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

Javascript:如何计算数组中相同对象的数量?

Javascript:如何计算数组中相同对象的数量?

holdtom 2022-12-09 19:01:39
这是我的 json 对象。我在其中存储对象 ID 和对象类型。let jsonData = [   {"id": "1", "object": "pen"},    {"id": "4", "object": "bag"},    {"id": "2", "object": "paper"},    {"id": "5", "object": "bottle"},   {"id": "3", "object": "notepad"},    {"id": "1", "object": "pen"},    {"id": "4", "object": "bag"},    {"id": "3", "object": "notepad"},    {"id": "3", "object": "notepad"},    {"id": "1", "object": "pen"},    {"id": "2", "object": "paper"},   {"id": "1", "object": "pen"},      ]所以,现在我想使用上面的数组以下面的格式创建一个新数组:|---------------------|------------------||        Object       |        Unit      ||---------------------|------------------||         Pen         |         4        ||---------------------|------------------||         Paper       |         2        ||---------------------|------------------||        Notepad      |         3        ||---------------------|------------------||         Bag         |         2        ||---------------------|------------------||        Bottle       |         1        ||---------------------|------------------|简而言之,新数组应该显示所有对象及其计数值。提前致谢。
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

你可以简单地使用Array.reduce函数


let jsonData = [

      {"id": "1", "object": "pen"}, 

      {"id": "4", "object": "bag"}, 

      {"id": "2", "object": "paper"}, 

      {"id": "5", "object": "bottle"},

      {"id": "3", "object": "notepad"}, 

      {"id": "1", "object": "pen"}, 

      {"id": "4", "object": "bag"}, 

      {"id": "3", "object": "notepad"}, 

      {"id": "3", "object": "notepad"}, 

      {"id": "1", "object": "pen"}, 

      {"id": "2", "object": "paper"},

      {"id": "1", "object": "pen"},      

   ];


   let summary = jsonData.reduce( (ac, el) => {


    let obj = ac.find(e => e.object == el.object);


    if (!obj) {

      obj = {object: el.object, unit: 0};

      ac.push(obj);

    }


    obj.unit = obj.unit + 1;

    return ac;

   }, []);

   

   console.log(summary);


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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