如何在javascript中通过ID合并多个对象数组? [英] How to merge multiple array of object by ID in javascript?

查看:212
本文介绍了如何在javascript中通过ID合并多个对象数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将4个对象数组合并为一个数组



例如: 4个数组,如

  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 finalArr = [
{memberID:80fs,RatingCW:4,ratingWW:4,incoCW:4,incoWW:3},
{MEMBERID: 81fs,RatingCW:4.5,ratingWW:4.5,incoCW:4.5,incoWW:2.5},
{MEMBERID: 82fs,RatingCW:5,ratingWW:5,incoCW:5,incoWW: 5},
{memberID:83fs,RatingCW:3,ratingWW:3,incoCW:3,incoWW:3},
{memberID:84fs,RatingCW:4.7,ratingWW:3.5, incoCW:4.5,incoWW:6.5}
];

使用lodash或普通javascript进行合并的最佳方式是什么?

解决方案

使用lodash,我认为更具可读性。



  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 } ;; var merged = _(arr1).concat(arr2,arr3,arr4).groupBy(memberID)。map(_。spread(_。merge))。value(); console.log(merged);  

 < script src =https:// cdn。 jsdelivr.net/lodash/4.13.1/lodash.min.js\"></script>  



'p>下面是codepen: http://codepen.io/kuhnroyal/ pen / Wxzdmw


I want to merge 4 array of object into one array

For example: 4 arrays like

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 }
];

and expected array like:

var finalArr = [
    { memberID : "80fs", RatingCW:4,ratingWW: 4, incoCW:4, incoWW:3},
    { memberID : "81fs", RatingCW:4.5,ratingWW: 4.5, incoCW:4.5, incoWW:2.5 },
    { memberID : "82fs", RatingCW:5,ratingWW: 5, incoCW:5, incoWW:5 },
    { memberID : "83fs", RatingCW:3,ratingWW: 3, incoCW:3, incoWW:3 },
    { memberID : "84fs", RatingCW:4.7,ratingWW: 3.5, incoCW:4.5, incoWW:6.5 }
  ];

What is the best way to merge using lodash or normal javascript?

解决方案

With lodash, a lot more readable I think.

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}];

var merged = _(arr1)
  .concat(arr2, arr3, arr4)
  .groupBy("memberID")
  .map(_.spread(_.merge))
  .value();

console.log(merged);

<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

Here is the codepen: http://codepen.io/kuhnroyal/pen/Wxzdmw

这篇关于如何在javascript中通过ID合并多个对象数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆