2013-10-13 2 views
0

Например, у меня есть два массива объектовJavascript - синхронизировать 2 массивы объектов

[ 
{ 
    '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. , если элемент с идентификатором не присутствует в одном из массивов, он копируется из массива, где находится присутствует
  2. , если два элемента имеют один и тот же идентификатор, мы сохраняем один с более высокой оценкой

ли есть ли библиотеки или узловые модули, которые могут выполнять эту синхронизацию для довольно больших массивов (предпочтительны модули nodejs)?

Где я должен начать свое исследование, чтобы сделать эту функцию надлежащим образом?

+1

ли два массива всегда сортируются по 'id', как это? и насколько они велики? –

+0

нет, не отсортировано, но они могут быть отсортированы, если нам это нужно. Размер массива составляет от 1000 до 10000 элементов, также весь этот код должен быть выполнен в nodejs, а не в браузере ... – vodolaz095

ответ

0

Я не думаю, что для этого есть модуль с полкой, но Underscore предоставляет некоторые полезные функции утилиты для массивов и коллекций, которые упрощают запись вашего кода. Кажется, какая-то комбинация zip, group by и max будет делать трюк.

http://underscorejs.org/

Смежные вопросы