映射数组数组

bwb*_*ing 13 javascript underscore.js lodash

在lodash中是否有方法映射数组数组

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

def double(x) { return x*2 }

_([[1,2],[3,4]]).somemethod(double) == [[2,4],[6,8]]
Run Code Online (Sandbox Code Playgroud)

Rad*_*nik 17

只是_.map两次:

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

或者没有lodash:

var doubledArray = array.map(function (nested) {
    return nested.map(function (element) {
        return element * 2;
    });
});
Run Code Online (Sandbox Code Playgroud)

此外,考虑使用es6箭头功能:

var doubledArray = array.map(nested => nested.map(element => element * 2));
Run Code Online (Sandbox Code Playgroud)


TbW*_*321 10

使用ES2015箭头功能,您可以使代码更清晰:

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

使用vanilla JS:

var array = [[1, 2], [3, 4]];
var double = x => x * 2;
var doubledArray = array.map( subarray => subarray.map( double ));
Run Code Online (Sandbox Code Playgroud)

  • 箭头功能与他的问题无关. (4认同)
  • 假设目标环境支持它们和/或它们用像Babel这样的东西进行转换. (3认同)

Rei*_*ica 9

在 map 语句中使用es6 解构语法要优雅得多:

array.map(([ a, b ]) => [ a*2, b*2 ]);
Run Code Online (Sandbox Code Playgroud)