Map an array of arrays
const deepMap=(input,callback)=>input.map(entry=>entry.map?deepMap(entry,callback):callback(entry))
//test
deepMap([1,2,3,[1,2]],x=>x*2) // [1,4,9,[1,4]]
You can make your code much cleaner with ES2015 arrow functions:
var array = [[1, 2], [3, 4]];
var double = x => x * 2;
var doubledArray = _.map( array, subarray => _.map( subarray, double ));
Using vanilla JS:
var array = [[1, 2], [3, 4]];
var double = x => x * 2;
var doubledArray = array.map( subarray => subarray.map( double ));
Just _.map
it twice:
var array = [[1, 2], [3, 4]];
var doubledArray = _.map(array, function (nested) {
return _.map(nested, function (element) {
return element * 2;
});
});
Or without lodash
:
var doubledArray = array.map(function (nested) {
return nested.map(function (element) {
return element * 2;
});
});
Furthermore, consider using es6 arrow functions:
var doubledArray = array.map(nested => nested.map(element => element * 2));
It's much more elegant to use the es6 destructuring syntax within your map statement:
array.map(([ a, b ]) => [ a*2, b*2 ]);