【问题标题】:Function to return a multidimensional array of 0s返回0的多维数组的函数
【发布时间】:2012-05-07 14:10:21
【问题描述】:

假设我有一个名为 multi0(Array) 的函数,我希望它接受一个数组作为参数。

如果我做了multi0([5]),它会返回一个看起来像这样的数组

[0,0,0,0,0]

如果我做了multi0([5,3]),它会返回一个看起来像这样的数组

[
    [0,0,0],
    [0,0,0],
    [0,0,0],
    [0,0,0],
    [0,0,0]
]

我尝试使用递归进行此操作,但没有成功。你是如何实现的?

【问题讨论】:

  • 请附上您尝试过的代码,以便我们告诉您其中有什么问题。

标签: javascript arrays recursion multidimensional-array


【解决方案1】:

试试这个:

function multi0(a,b) {
    x = new Array;
    for(var i=0;i<a;i++) {
        x[i] = new Array;
        for(var s=0;s<b;s++) {
            x[i][s] = 0;
        }
    }
    return x;
}

在这里查看fiddle

【讨论】:

    【解决方案2】:

    像这样:

    function multi0(arr) {
      if (arr.length == 0) {
        return 0;
      } else {
        var children = arr.slice(1);
        var result = [];
        for (var i = 0; i < arr[0]; i++) {
          result.push(multi0(children));
        }
        return result;
      }
    }
    

    http://jsfiddle.net/ffuH4/

    或稍长但更有效:

    function multi0(arr) {
      var result = [];
      if (arr.length == 1) {
        for (var i = 0; i < arr[0]; i++) {
          result.push(0);
        }
      } else {
        var children = arr.slice(1);
        for (var i = 0; i < arr[0]; i++) {
          result.push(multi0(children));
        }
      }
      return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 2014-07-23
      • 2018-01-05
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多