Tengo esta matriz:

categories = ['Cat A', 'Cat B', 'Cat C', 'Cat D']

Y esta matriz:

selectedCategories = ['Cat A', 'Cat D']

Quiero producir una nueva matriz a partir de estos dos:

categoriesAvailableToAdd = ['Cat B', 'Cat C']

¿Hay algún truco claro de subrayado / lo-dash que haga esto? No puedo encontrar ninguno. Debe ser una tarea común?

0
Joe 4 sep. 2014 a las 12:32

3 respuestas

La mejor respuesta

Puede utilizar la función _.difference, de esta manera

console.log(_.difference(categories, selectedCategories));
# [ 'Cat B', 'Cat C' ]
1
thefourtheye 4 sep. 2014 a las 08:34

_.difference:

_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
// → [1, 3, 4]
0
Amadan 4 sep. 2014 a las 08:34

Puede filtro con un función de búsqueda de existencia de matriz.

Array.prototype.diff = function(a) {
    return this.filter(function(i) {return a.indexOf(i) < 0;});
};

Su ejemplo:

var categories = ['Cat A', 'Cat B', 'Cat C', 'Cat D'];
var selectedCategories = ['Cat A', 'Cat D'];
categories.diff(selectedCategories);
// => ['Cat B', 'Cat C']
0
Margus 4 sep. 2014 a las 08:48