Javascript - 同步2个对象数组

时间:2013-10-13 22:03:11

标签: javascript arrays node.js synchronization

例如,我有两个对象数组

[
 {
   'id':1,
   'value':'someval for id 1',
   'score':1     
 },
 {
   'id':2,
   'value':'someval for id 2 with score 2',
   'score':2     
 },
 {
   'id':4,
   'value':'someval for id 2',
   'score':1     
 }
]

[
 {
   'id':2,
   'value':'someval for id 2 ',
   'score':1     
 },
 {
   'id':3,
   'value':'someval for id 3',
   'score':1     
 }
]

我想将它们同步为

[
 {
   'id':1,
   'value':'someval for id 1',
   'score':1     
 },
 {
   'id':2,
   'value':'someval for id 2 with score 2',
   'score':2     
 },
 {
   'id':3,
   'value':'someval for id 3',
   'score':1     
 },
 {
   'id':4,
   'value':'someval for id 2',
   'score':1     
 }
]

所以,我希望同步能够处理这个规则

  1. 如果具有id的项目不存在于其中一个数组中,则会从存在的数组中复制
  2. 如果两个项目的ID相同,我们会保留一个得分较高的项目
  3. 是否有任何库或节点模块可以为相当大的数组(首选nodejs模块)进行同步?

    我应该从哪里开始我的研究以正确的方式发挥这个功能?

1 个答案:

答案 0 :(得分:0)

我不认为有一个现成的模块可以实现这一点,但是Underscore在数组和集合上提供了一些很好的实用程序函数,可以使代码更容易编写。看起来像zip,group by和max的某种组合可以解决问题。

http://underscorejs.org/