随机嵌套和填充数组

时间:2011-11-26 03:41:48

标签: javascript arrays random

我理解javascript及其语法,但我对其标准功能相对不熟悉。

对于我正在研究的基本javascript游戏,我需要随机嵌套数组:

包含2个项目的数组(两个嵌套数组)

  1. 包含2个项目的嵌套数组(两个嵌套数组)
    • 包含2个项目的嵌套数组
      • 项目
      • 项目
    • 包含1个项目的嵌套数组
      • 项目
  2. 包含2个项目的嵌套数组(一个嵌套数组,一个空插槽)
    • 包含1个项目的嵌套数组
      • 项目
  3. 我希望这很清楚;如果有人可以发布一些文档的链接或给我指示我应该如何构建我的代码,我可能会从那里采取它。

1 个答案:

答案 0 :(得分:1)

下面的代码提供了一些build2LevelArray()解决问题的函数。它会创建一个长度不超过2的数组(您可以使用其他数字调整此3中的buildArray())。永远不会返回空数组,因为我们返回null。返回数组的项目本身是null值或数组。作为数组的每个项目的长度不超过2,其所有元素都由buildItem()生成(硬编码1作为buildItem()中的示例)。

function buildItem() {
  // This function implements item generation algorithm, for now, all items are 1s
  return 1;
}

function buildArray(itemGenerator) {
  var n = Math.floor(Math.random()*3); // Random integer between 0 and 2 (inclusive)
  if (n == 0) {
    return null; // Return nulls instead of empty arrays
  }
  var a = new Array();
  for (var i = 0; i < n; i++) {
    a.push(itemGenerator());
  }
  return a;
}

function build1LevelArray() {
  return buildArray(buildItem);
}

function build2LevelArray() {
  return buildArray(build1LevelArray);
}

它生成的示例值:

null            // no array
[null]          // example array of length 1
[[1, 1]]        // another example array of length 1
[null, [1, 1]]  // example array of length 2
[[1], [1, 1]]   // another example array of length 2