我想更多的功能添加到功能Barmar帮我part one创建。基本上,我正在创建一个多维数组,它将从开始和结束数字中计算出数字的范围。对于我来说有点棘手的是,孩子的范围需要嵌套在先前的范围内。这通过aInput数组中的第一项指示。例如,以下输入数组将生成一个长度为30行,每行3列的新数组。Javascript。创建一个从计算部分多维数组2
var aInput = new Array();
aInput[0] = new Array("0", "1", "5");
aInput[1] = new Array("1", "1", "3");
aInput[2] = new Array("2", "1", "2");
输出会是这个样子:
0: Array[3]
1: Array[3]
2: Array[3]
3: Array[3]
4: Array[3]
5: Array[3]
6: Array[3]
7: Array[3]
0: 2
1: 1
2: 2
length: 3
8: Array[3]
9: Array[3]
10: Array[3]
11: Array[3]
12: Array[3]
13: Array[3]
14: Array[3]
15: Array[3]
16: Array[3]
17: Array[3]
18: Array[3]
19: Array[3]
20: Array[3]
21: Array[3]
22: Array[3]
23: Array[3]
24: Array[3]
25: Array[3]
26: Array[3]
27: Array[3]
28: Array[3]
29: Array[3]
length: 30
正如你可以看到我已经扩大了第7行,它有3项(列)在它的内部。整个数组从1-5开始计数,其中嵌入的怒气在内部计数输入数组1-3的第二行,并且该数组中有另一个嵌套范围,它在1-2内。简单的概念,但有点难解释。基本上我们正在创建一个数字网格。感谢Barmar,这一切都很好。新问题是我需要创建多个数字网格并将它们堆叠在一起。意味着我的输入数组可能看起来像这样。
aInput[0] = new Array("0", "1", "5");
aInput[1] = new Array("1", "1", "3");
aInput[2] = new Array("0", "10", "15");
aInput[3] = new Array("1", "10", "12");
而结果应该是一个长度为42和两列的数组。我有一个想法应该如何工作。我需要为这些集合添加另一个循环。我在input_indexed数组中定义了哪些内容,但我在理解多维数组上的推送如何工作时遇到了一些问题。这是我迄今为止所拥有的。任何帮助是极大的赞赏。
// JavaScript Document
var aInput = new Array();
aInput[0] = new Array("0", "1", "5");
aInput[1] = new Array("1", "1", "3");
aInput[0] = new Array("0", "10", "12");
aInput[1] = new Array("1", "40", "41");
var input_indexed = [],
elem = [];
var rObject = {};
var set = -1;
// Get aInput[] into a more useful arrangement
for (var i = 0; i < aInput.length; i++) {
rObject = {
start: parseInt(aInput[i][1]),
end: parseInt(aInput[i][2])
};
if (parseInt(aInput[i][0]) == 0){set++;}
input_indexed[set].push(rObject);
elem.push(parseInt(aInput[i][1]));
}
aOutput = [];
done = false;
while (!done) {
aOutput.push(elem.slice(0));
for (s = 0;s < input_indexed.length;s++){ //this is where I am trying to loop through the sets
for (i = elem.length - 1;; i--) {
if (i == -1) {
done = true;
break;
}
elem[i]++;
if (elem[i] <= input_indexed[s][i].end) {
break;
}
elem[i] = input_indexed[s][i].start;
}
}
}
console.log(aOutput);
我想通了。我会很快发布答案 – user2300933 2013-05-02 21:53:21