映射数组数组

Map an array of arrays

本文关键字:数组 映射      更新时间:2023-09-26

lodash 中是否有一种方法可以映射数组

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

def double(x) { return x*2 }
_([[1,2],[3,4]]).somemethod(double) == [[2,4],[6,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 箭头函数:

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

您可以使用 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 ));

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

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]]

在 ES5 中执行此操作的简单方法:

[].concat(...this.array1.map(ap => ap.subArray))

它可以是一种纠缠:

var Coef = Array.apply(null, Array(3)).map(function(){return
Array.apply(null, Array(4)).map(function(){return 0})})

尽管如此,如果您想在 Gas 中初始化数组,它会很有用