【问题标题】:Javascript - synchronize 2 arrays of objectsJavascript - 同步 2 个对象数组
【发布时间】:2013-10-14 10:40:28
【问题描述】:

例如,我有两个对象数组

[
 {
   '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,我们保留得分较高的项目

是否有任何库或节点模块可以对相当大的数组进行这种同步(首选 nodejs 模块)?

我应该从哪里开始我的研究才能以适当的方式实现这个功能?

【问题讨论】:

  • 这两个数组总是像id 那样排序吗?它们可以有多大?
  • 不,没有排序,但如果我们需要,它们可以排序。数组大小从 1000 到 10000 个元素,所有这些代码都必须在 nodejs 中执行,而不是在浏览器中...

标签: javascript arrays node.js synchronization


【解决方案1】:

我认为没有现成的模块可以实现这一点,但 Underscore 提供了一些关于数组和集合的良好实用功能,可以使您的代码更易于编写。似乎 zip、group by 和 max 的某种组合可以解决问题。

http://underscorejs.org/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-13
    • 2021-11-20
    • 2015-10-16
    • 2016-11-07
    • 2018-05-23
    • 1970-01-01
    • 2019-06-06
    • 2010-09-28
    相关资源
    最近更新 更多