2016-09-05 3 views
0

Я использую lodash с некоторыми вычислениями, но есть функция, которая не работает, я ожидал, im используя, например, «разницу».Сравнение 2 массивов с _.difference

Его использование является:

_.difference([2, 1], [2, 3]); 
output: [1] 

Но когда я применить мои массивы:

_.difference([5111471, 5111513], [5111471,5111505,5111513]); 
output:[] 

Вместо того чтобы дать мне [5111505], дает мне пустой массив.

+0

Для этого вам необходимо предоставить второй аргумент в качестве первого '_.difference ([5111471,5111505, 5111513], [5111471, 5111513]); ' –

+0

Являются ли данные всегда отсортированными? – MiltoxBeyond

ответ

1

_.difference возвращает элементы первого массива, отсутствующие во втором. В вашем примере нет таких элементов, следовательно, пустой результат. Если вы хотите symmetric difference (то есть элементы, которые присутствуют в первом массиве или второй, но не в обоих), вы можете сделать что-то вроде

diff = _.union(_.difference(a, b), _.difference(b, a)) 
0

_.difference фактически не возвращают разницу между два массива, но вместо этого возвращает первый массив минус второй. Таким образом, чтобы вернуться [5111505] вам нужно сделать:

_.difference([5111471,5111505,5111513],[5111471, 5111513]); 

Смотрите документацию для получения дополнительной информации: https://lodash.com/docs/4.15.0#difference

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