Javascript循环/数组/变量问题

时间:2010-06-11 16:11:11

标签: javascript arrays variables loops for-loop

我正试图让这个工作,我希望这不是太模糊。 -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

1 个答案:

答案 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]);
}