Ваш массив 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 (технически m x n ), потому что вы вкладываете циклы. Чтобы сделать 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 <9, но не намного. Однако представьте, что у вас есть 300 пунктов в списке, и вы хотите напечатать его 1000 раз. Ну а теперь 1300 << 300000. </p>
Последнее замечание: в большинстве языков массивы начинаются с нуля, поэтому было бы 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]);
}