How to merge multiple array of object by ID in javascript?

前端 未结 5 815
长情又很酷
长情又很酷 2020-12-01 19:32

I want to merge 4 array of object into one array

For example: 4 arrays like

var arr1 =[
  { memberID : \"81fs\", RatingCW:4.5},
  {          


        
5条回答
  •  一整个雨季
    2020-12-01 20:04

    Here's some steps using lodash:

    1. Put all objects into an array (_.flatten then _.groupby)
    2. Flatten 2d array into 1d array of 'user' obj (_.map then _.merge and apply to pass in array as arg)

    var arr1 =[
      { memberID : "81fs", RatingCW:4.5},
      { memberID : "80fs", RatingCW:4},
      { memberID : "82fs", RatingCW:5 },
      { memberID : "83fs", RatingCW:3},
      { memberID : "84fs", RatingCW:4.7}
    ];
    var arr2 =[
      { memberID : "80fs", ratingWW: 4},
      { memberID : "81fs", ratingWW: 4.5},
      { memberID : "83fs", ratingWW: 3},
      { memberID : "82fs", ratingWW: 5},
      { memberID : "84fs", ratingWW: 3.5}
    ];
    
    var arr3 =  [
      { memberID : "80fs", incoCW:4},
      { memberID : "81fs", incoCW:4.5},
      { memberID : "82fs", incoCW:5},
      { memberID : "83fs", incoCW:3},
      { memberID : "84fs", incoCW:4.5}
      ];
    var arr4 =  [
      { memberID : "80fs", incoWW:3},
      { memberID : "81fs", incoWW:2.5 },
      { memberID : "82fs", incoWW:5 },
      { memberID : "83fs", incoWW:3 },
      { memberID : "84fs", incoWW:6.5 }
    ];
    
    var a  = _.groupBy(_.flatten([arr1,arr2,arr3,arr4]), 'memberID');
    var b = _.map(a, function(val){ return _.merge.apply(_,val) });    
    console.log(b);

提交回复
热议问题