2016-02-10 9 views
5

Esiste un metodo in lodash per mappare su un array di arrayMappa un array di array

mi piacerebbe fare qualcosa di simile in modo che mantiene la struttura della matrice.

def double(x) { return x*2 } 

_([[1,2],[3,4]]).somemethod(double) == [[2,4],[6,8]] 

risposta

5

Si può farti r il codice molto più pulito con le funzioni di direzione ES2015:

var array = [[1, 2], [3, 4]]; 
var double = x => x * 2; 
var doubledArray = _.map(array, subarray => _.map(subarray, double)); 

Utilizzando JS vaniglia:

var array = [[1, 2], [3, 4]]; 
var double = x => x * 2; 
var doubledArray = array.map(subarray => subarray.map(double)); 
+2

Supponendo che l'ambiente di destinazione li sostiene e/o hanno transpile con qualcosa di simile a Babel. Le funzioni di freccia –

+1

non hanno nulla a che fare con la sua domanda. – andygoestohollywood

8

Basta _.map due volte:

var array = [[1, 2], [3, 4]]; 
var doubledArray = _.map(array, function (nested) { 
    return _.map(nested, function (element) { 
     return element * 2; 
    }); 
}); 

O senza lodash:

var doubledArray = array.map(function (nested) { 
    return nested.map(function (element) { 
     return element * 2; 
    }); 
}); 

Inoltre, è possibile utilizzare es6 arrow functions:

var doubledArray = array.map(nested => nested.map(element => element * 2));