函数返回0的多维数组

use*_*382 1 javascript arrays recursion multidimensional-array

想象一下,我有一个调用的函数multi0(Array),我希望它将一个数组作为参数.

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

[0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

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

[
    [0,0,0],
    [0,0,0],
    [0,0,0],
    [0,0,0],
    [0,0,0]
]
Run Code Online (Sandbox Code Playgroud)

我用递归尝试了这个,但它没有用.你是如何实现的?

Guf*_*ffa 5

像这样:

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)