【问题标题】:Functionally create an array of positions (with Underscore/Lowdash)在功能上创建一个位置数组(使用下划线/Lodash)
【发布时间】:2014-11-17 11:58:56
【问题描述】:

有一个单元格。整数维度存储在数组中。如何将这个维度数组减少(或以其他方式转换)为包含所有可能单元格位置的数组的数组?

例如,给定网格的大小在数组 ([2,2]) 中,如何在没有 for 循环的情况下生成位置列表 ([[0,0],[0,1],[1,0],[1,1]])? (可能带有 lodash 或下划线?)

我相信这是可能的。在意识到我在拖延之前我已经去了,下面的 for 循环会起作用:

var size = [ 2, 3 ];
var positions = [];

for ( var x = 0;  x < size[0]; ++x ) {
    for ( var y = 0;  y < size[1]; ++y ) {
        positions.push( [ x, y ] );
    }
}

【问题讨论】:

    标签: javascript arrays functional-programming underscore.js lodash


    【解决方案1】:

    您可以像这样将_.range 与 underscore.js 一起使用:

    _.range(size[0] * size[1]).map(function(i) { 
        return [ Math.floor(i / size[1]), i % size[1] ]; 
    });
    

    编辑:我添加了一些你可以玩的 jsfiddle:http://jsfiddle.net/23Lsu6vp/

    【讨论】:

      【解决方案2】:

      您可以使用times 几次,然后使用浅flatten 结果数组:

          var data = _.times(size[0], function(x){
              return _.times(size[1], function(y){
                  return [x,y];
              });
          });
      
          var positions = _.flatten(data, true);
      

      【讨论】:

      • +1,您应该将其设为以[2,2] 作为输入的(递归)函数
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多