【问题标题】:Array of objects get by type and sum price [duplicate]按类型和总价格获取的对象数组[重复]
【发布时间】:2021-04-15 11:46:24
【问题描述】:

我有一个对象数组,由包含类型、数量、名称和其他元数据的对象组成。

看起来像:

[
    {
       "id":"31362",
       "quantity":"7",
       "type":"wood",
       "metadata":{
          "name":"Wood Pack"
       }
    },
    {
       "id":"31361",
       "quantity":"13",
       "type":"sand",
       "metadata":{
          "name":"Sand Pack"
       }
    },
    {
       "id":"29161",
       "quantity":"7",
       "type":"sand",
       "metadata":{
          "name":"Sand Pack"
       }
    },
    {
       "id":"31398",
       "quantity":"50000",
       "type":"energy",
       "metadata":{
          "name":"Energy Pack"
       }
    },
    {
       "id":"31363",
       "quantity":"50000",
       "type":"energy",
       "metadata":{
          "name":"Energy Pack"
       }
    },
    {
       "id":"31368",
       "quantity":"50000",
       "type":"energy",
       "metadata":{
          "name":"Energy Pack"
       }
    },
    {
       "id":"30755",
       "quantity":"1",
       "type":"energy",
       "metadata":{
          "name":"Energy Pack"
       }
    }
 ]

我想要实现的是最终得到另一个数组,该数组对于下面的每个 type 属性和数量的总和都有一个对象

例如

    [
   {
      type: 'wood',
      quantity: 7
   },
   {
      type: 'sand',
      quantity: 20
   }
   ....
]

【问题讨论】:

    标签: javascript node.js arrays


    【解决方案1】:

    试试这个 for 循环过程。

    let a = [
        {
           "id":"31362",
           "quantity":"7",
           "type":"wood",
           "metadata":{
              "name":"Wood Pack"
           }
        },
        {
           "id":"31361",
           "quantity":"13",
           "type":"sand",
           "metadata":{
              "name":"Sand Pack"
           }
        },
        {
           "id":"29161",
           "quantity":"7",
           "type":"sand",
           "metadata":{
              "name":"Sand Pack"
           }
        },
        {
           "id":"31398",
           "quantity":"50000",
           "type":"energy",
           "metadata":{
              "name":"Energy Pack"
           }
        },
        {
           "id":"31363",
           "quantity":"50000",
           "type":"energy",
           "metadata":{
              "name":"Energy Pack"
           }
        },
        {
           "id":"31368",
           "quantity":"50000",
           "type":"energy",
           "metadata":{
              "name":"Energy Pack"
           }
        },
        {
           "id":"30755",
           "quantity":"1",
           "type":"energy",
           "metadata":{
              "name":"Energy Pack"
           }
        }
     ]
    let b = {};
    a.forEach((v)=>{b[v.type] = b[v.type]?b[v.type]+parseInt(v.quantity):parseInt(v.quantity)});
    
    let new_arr = [];
    for (const [key, value] of Object.entries(b)) {
      let temp = {type:key, quantity: value}
      new_arr.push(temp);
    }
    
    console.log(new_arr);

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      相关资源
      最近更新 更多