2016-02-10 93 views
5

有没有一种方法在lodash映射通过阵列阵列映射一个数组的阵列

我想要做这样的事情,以便它保持数组的结构。

def double(x) { return x*2 } 

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

回答

5

你可以让你R代码里面有ES2015箭头功能更清洁:

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

使用香草JS:

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

假设目标环境中支持他们和/或他们喜欢的东西巴贝尔transpile它。 –

+1

箭头功能与他的问题无关。 – andygoestohollywood

8

只是_.map两次:

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

或者不lodash

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

此外,可以考虑使用es6 arrow functions

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