2015-04-03 9 views
8

Mi aspettavo che la lodash senza funzione prendesse una matrice di valori, ma invece impiega più argomenti. Come faccio a passare un array e farlo funzionare.come usare lodash _ senza operatore con una matrice invece di più argomenti

Esempio:

var bar = { 
    foo: ['a', 'b', 'c'] 
}; 


_.without(bar.foo, 'c', 'a'); // works; 
_.without(bar.foo, ['c', 'a']); // doesn't work 

mio elenco di esclusione deve essere passato come array o variabile quindi sarebbe utile sapere come utilizzare un array con la senza funzione.

risposta

4

È possibile utilizzare .apply

var bar = { 
 
    foo: ['a', 'b', 'c'] 
 
}; 
 

 

 
console.log(_.without.apply(_, [bar.foo].concat(['c', 'a'])));
<script src="https://rawgit.com/lodash/lodash/3.0.1/lodash.min.js"></script>

7

Se ti trovi in ​​un ambiente in cui è possibile utilizzare il ES6 spread operator, ..., quindi

.without(bar.foo, ...['c', 'a']); 
8

In questo caso, si può usare l'array di valori così com'è, con _.difference, come questo

console.log(_.difference(bar.foo, ['a', 'c'])); 
[ 'b' ] 
+6

questo è probabilmente il modo migliore per fare quello che mi serve, ma io accepeted risposta di Alexander dato che era specifica per la domanda esatta. Tuttavia, userò la tua soluzione nel mio progetto attuale. Grazie! – MonkeyBonkey

1

potrebbe usare operatore diffusione

var bar = { 
    foo: ['a', 'b', 'c'] 
}; 

var arr = ['c', 'a']; 

console.log(_.without([bar.foo], ...arr) ; 
Problemi correlati