2015-12-13 4 views
0

У меня есть 3 массива объектов, обработанных большими файлами CSV. Они имеют одинаковый формат: [{ count: 2, name: "foo", unique: false}, {count: 4, name: "foo", unique: false}], и каждый массив содержит ровно 500 объектов. Я ищу элегантный способ проверить значение ключа имени для всех трех массивов, и если он существует только в одном, измените логическое значение уникального ключа на true. Кажется, я не думаю ни о чем, кроме грубых подходов, которые доказывают дорого. Не нужно быть ванильным javascript, underscore и т. Д. В порядке. Есть идеи?Поиск уникальных значений между несколькими массивами объектов

ответ

2

Вы можете сцепить 3 Массивы, а затем искать уников с подчеркиванием (вы сказали, что вы не против):

var all = a1.concat(a2).concat(a3) 
_.uniq(all, function(obj){ 
    return obj.count; 
}); 

Также _.uniq(array, [isSorted], [iteratee]) дает возможность сортировать массив для повышения производительности, но это зависит от вариант использования программы, если он того стоит.

В общем, я не стал бы слишком беспокоиться о производительности, пока вы не узнаете ее проблему.

http://underscorejs.org/#uniq

+0

благодарит jonasnas! _.uniq возвращает дубликат свободного массива, а не самих дубликатов, могу ли я использовать его для переключения булевых значений фактических дубликатов? –

+0

Мозг не функционировал должным образом в воскресенье утром, они начинаются как ложные, поэтому мне просто нужно перевернуть логическое значение возвращаемого массива в true с помощью цикла. Спасибо за помощь, отметив, что решили! –

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