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

前端 未结 5 816
长情又很酷
长情又很酷 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:08

    Pure JS way,it's a tough one,took hours to get it.

    var arr1 = [{"memberID":"81fs","RatingCW":4.5},{"memberID":"80fs","RatingCW":4},{"memberID":"82fs","RatingCW":5},{"memberID":"83fs","RatingCW":3},{"memberID":"84fs","RatingCW":4.7}],
        arr2 = [{"memberID":"80fs","ratingWW":4},{"memberID":"81fs","ratingWW":4.5},{"memberID":"83fs","ratingWW":3},{"memberID":"82fs","ratingWW":5},{"memberID":"84fs","ratingWW":3.5}],
        arr3 = [{"memberID":"80fs","incoCW":4},{"memberID":"81fs","incoCW":4.5},{"memberID":"82fs","incoCW":5},{"memberID":"83fs","incoCW":3},{"memberID":"84fs","incoCW":4.5}],
        arr4 = [{"memberID":"80fs","incoWW":3},{"memberID":"81fs","incoWW":2.5},{"memberID":"82fs","incoWW":5},{"memberID":"83fs","incoWW":3},{"memberID":"84fs","incoWW":6.5}];
    
    const arrs=[...arr1,...arr2,...arr3,...arr4];
    const noDuplicate=arr=>[...new Set(arr)]
    const allIds=arrs.map(ele=>ele.memberID);
    const ids=noDuplicate(allIds);
    
    const result=ids.map(id=>
    	arrs.reduce((self,item)=>{
    		return item.memberID===id?
    		{...self,...item} : self
    	},{})
    )
    console.log(result);

提交回复
热议问题