Подтвердить что ты не робот

Сопоставить массив массивов

Есть ли способ в lodash для отображения массива массивов

Я хотел бы сделать что-то подобное, чтобы сохранить структуру массива.

def double(x) { return x*2 }

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

Ответ 1

Вы можете сделать свой код намного чище с помощью функций стрелок 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

Просто _.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));

Ответ 3

Это может быть своего рода запутывание:

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

Тем не менее, это может быть полезно, если вы хотите инициализировать массив в Gas

Ответ 4

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