2016-06-30 40 views
5

La funzione lodash zip() accetta normalmente due o più matrici come argomenti. Può accettare una serie di array?La funzione di lodash zip può funzionare con una serie di array?

Ad esempio, dato un oggetto come var aa = [[1,2,3],[4,5,6]]; e un'uscita desiderata di [[1,4],[2,5],[3,6]] zip() deve essere chiamata come _.zip(aa[0],aa[1]). Per una serie di array con più di due elementi, la digitazione degli indici nella chiamata di funzione diventa ripetitiva.

La chiamata _.zip(aa) non funziona. Nidifica solo l'array originale di array.

risposta

2

È possibile splat tuo array di array utilizzando apply o ES2015 spread operator (...):

// call zip with a `this` context of the lodash object 
// and with each entry in aa as a separate argument 
// e. g. zip(aa[0], aa[1], ..., aa[N]); 
_.zip.apply(_, aa); 

// Same call, but using ES2015 
_.zip(...aa) 
+0

Questa è una nota importante per il contesto giusto per passare. A volte potrebbe funzionare per passare "null", ma l'oggetto lodash è ovviamente la scelta giusta. –

2

Certo, provate questo:

_.zip.apply(_, aa)