映射数组数组

时间:2016-02-10 20:58:15

标签: javascript underscore.js lodash

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

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

def double(x) { return x*2 }

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

6 个答案:

答案 0 :(得分:15)

只需_.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 arrow functions

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

答案 1 :(得分:9)

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

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

使用vanilla JS:

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

答案 2 :(得分:0)

可能是一种纠缠:

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

尽管如此,如果要在 Gas

中初始化数组,它可能会很有用。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在ES5上做到这一点的简单方法:

  

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

答案 5 :(得分:0)

在地图声明中使用 es6 destructuring syntax更为优雅:

.checkitem__wrapper {
  position: relative;
}
.checkitem {
  position: absolute;
  left: 0; top: 0; right: 0; bottom: 0;
}
.cancelled {
  opacity: 0.25;
}