How to merge two arrays and sum values of duplicate objects using lodash

后端 未结 5 1601
走了就别回头了
走了就别回头了 2020-12-19 14:34

There are two arrays:

[
  {\"id\": \"5c5030b9a1ccb11fe8c321f4\", \"quantity\": 1},
  {\"id\": \"344430b94t4t34rwefewfdff\", \"quantity\": 5},
  {\"id\": \"34         


        
5条回答
  •  眼角桃花
    2020-12-19 14:52

    You can do it with plain JavaScript.

    Use Array.reduce() to make an intermediate dictionary by id and accumulate the quantities, then turn it into an array with Object.values():

    const arr1 = [
      {"id": "5c5030b9a1ccb11fe8c321f4", "quantity": 1},
      {"id": "344430b94t4t34rwefewfdff", "quantity": 5},
      {"id": "342343343t4t34rwefewfd53", "quantity": 3}
    ];
    const arr2 = [
      {"id": "5c5030b9a1ccb11fe8c321f4", "quantity": 2},
      {"id": "344430b94t4t34rwefewfdff", "quantity": 1}
    ];
    
    const result = Object.values([...arr1, ...arr2].reduce((acc, { id, quantity }) => {
      acc[id] = { id, quantity: (acc[id] ? acc[id].quantity : 0) + quantity  };
      return acc;
    }, {}));
    
    console.log(result);

提交回复
热议问题