以下代码提供了解决您的问题的build2LevelArray()
的一些功能。它会创建一个长度不超过2的数组(您可以使用其他数字来调整buildArray()
中的3
)。因为我们返回null
而不是空数组。返回数组的项目本身是null
值或数组。每个数组都具有不大于2的长度,并且其所有元素都由buildItem()
(在buildItem()
中作为示例的硬编码1
)生成。
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
所以嵌套是随机的,但什么项目?预先确定的,随机的?项目只能在结构中出现两个层次?你想要一个随机深度还是总是应该是2个等级?什么是空插槽?未定义?空值?空的子阵列? –
@Adam Zalcman我希望物品只出现在第二层,并且有一个固定的深度。这些项目无关紧要,因为我现在只想创建一个基本脚本 - 我以后可以随时增加复杂性。 –
哦,空的项目只是空。 –