Is there a method in lodash to map over an array of arrays
I would like to do something like this so that it keeps the structure of the array.
def double(x) { return x*2 }
_([[1,2],[3,4]]).somemethod(double) == [[2,4],[6,8]]
map() creates a new array from calling a function for every array element. map() calls a function once for each element in an array. map() does not execute the function for empty elements. map() does not change the original array.
To map multiple arrays with JavaScript, we can use the map method. to define the zip function that calls a1. map to combine the entries from a1 and a2 with index i into one entry. Then we call zip with arr1 and arr2 to zip them into one array.
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));
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 ));
It's much more elegant to use the es6 destructuring syntax within your map statement:
array.map(([ a, b ]) => [ a*2, b*2 ]);
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]]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With