我正试图让这个工作,我希望这不是太模糊。 -Chris
var example = new Array();
var test1 = "one";
var test2 = "two";
var test3 = "three";
for (v = 1; v <= 3; v++) {
alert(example[test + v])
}
我希望警报说:
一个
2个
3
答案 0 :(得分:1)
您的数组example
未在任何地方初始化。它应该是这样的:
var example = new Array();
example[1] = "one";
example[2] = "two";
example[3] = "three";
for (v = 1; v <= 3; v++) {
alert(example[v]);
}
这将发出三个单独的警报,分别表示“一个”,然后是“两个”,然后是“三个”。如果您想要一个“一二三”的警报,您应该这样做:
var example = new Array();
example[1] = "one";
example[2] = "two";
example[3] = "three";
var output = "";
for (v = 1; v <= 3; v++) {
output += " " + example[v];
}
alert(output);
在这种情况下,您可以嵌套循环,但生成输出字符串一次然后循环显示它会更有效。例如:
var output = "";
// This variable just makes it happen 3 times, it no longer corresponds to the array size
for (numAlerts = 1; numAlerts <= 3; numAlerts ++) {
// This is the actual index for the array
for (v = 1; v <= example.length; v++) {
output += " " + example[v];
}
alert(output);
// Clean out the string or it will keep concatenating
output = "";
}
该示例的计算成本为 n ^ 2 (技术上 mxn ),因为您正在嵌套循环。要生成3个警报,每个警报具有3个数组元素的串联,将需要9个重要操作。下一个例子:
var output = "";
// This variable is once more for array size
for (v = 1; v <= example.length; v++) {
output += " " + example[v];
}
// This variable controls how many times the alert is printed
for (numAlerts = 1; numAlerts <= 3; numAlerts++) {
alert(output);
}
此计算成本 2n ,缩减为 n 。在我们的示例中,发生了6个重要操作,3个用于连接字符串,还有3个用于打印它。 6&lt; 9,但不是很多。但是,假设您在列表中有300个项目,并且想要打印1000次。那么,现在1300&lt;&lt; 300000.
最后一点注意事项:在大多数语言中,数组都是从零开始的,所以example[0], [1], [2], etc.
我知道你匹配了example[1] = "one"
但是如果你让它变得混乱从1开始。数组的标准for
周期为:
var example = ["zero", "one", "two", "three"];
for (i = 0; i < example.length; i++) {
action(example[i]);
}