Подтвердить что ты не робот

Underscore.js - Есть ли функция, которая создает массив, который отличается от двух массивов?

Ищете функцию в underscore.js, которая возьмет 2 массива и вернет новый массив уникальных значений? Что-то вроде _without

_.without([0, 1, 3, 9], [1, 3]);

Я хотел бы вернуть => [0,9]

Появляется _woutout второй arg - это список значений, а не массив. Любой, кто там знает если подчеркивание имеет определенную функцию, которую я ищу? Или я могу взять массив exisitng и скрывать его до значений, которые ожидает функция.

Спасибо,
~ ck в Сан-Диего

4b9b3361

Ответ 1

_.without.apply(_, [arr1].concat(arr2))

[[0, 1, 3, 9]].concat([1, 3]) [[0, 1, 3, 9], 1, 3];

_.without.apply(_, [[0, 1, 3, 9], 1, 3]) - _.without([0, 1, 3, 9], 1, 3)

У вас есть отличный метод _.without. Поэтому просто преобразуйте массив в список значений, которые вы можете передать в функцию. Это цель Function.prototype.apply

Ответ 2

Функция _.difference должна дать вам то, что вы ищете:

_.difference([0, 1, 3, 9], [1, 3]); // => [0, 9]

Ответ 3

var result = _.reject([0, 1, 3, 9], function(num) {
                return _.include([1, 3], num);
            });

Ответ 4

Lo-Dash расширяется Подчеркиванием, и вот что вам нужно: http://lodash.com/docs#xor

_. Исключающее

Создает массив, который является симметричной разницей предоставленных массивов. См. http://en.wikipedia.org/wiki/Symmetric_difference.

_.xor([1, 2, 3], [5, 2, 1, 4]);
// → [3, 5, 4]