Underscore.js - Есть ли функция, которая создает массив, который отличается от двух массивов?
Ищете функцию в underscore.js, которая возьмет 2 массива и вернет новый массив уникальных значений? Что-то вроде _without
_.without([0, 1, 3, 9], [1, 3]);
Я хотел бы вернуть => [0,9]
Появляется _woutout второй arg - это список значений, а не массив. Любой, кто там знает
если подчеркивание имеет определенную функцию, которую я ищу? Или я могу взять массив exisitng и скрывать его до значений, которые ожидает функция.
Спасибо,
~ ck в Сан-Диего
Ответы
Ответ 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]