Некоторые математические проблемы с циклами и массивами - PullRequest
0 голосов
/ 23 мая 2018
var test = [
"test1",
"test2",
"test3",
"test4"
];
var text = "";
for (var i = 0; i < test.length; i++) {
if (i == test.length) {
    text += test[i] + ". Fin";
    } else {
    text += test[i] + "<br>";
    }
 }

В этом коде я в основном пытаюсь создать список, который приведет к: test1 test2 test3 test4.Fin

Все работает, кроме.Плавник.Я считаю, что это потому, что я не получаю номер правильно или что-то в этом роде.Спасибо заранее, потому что я знаю, что люди здесь очень полезныArray.join() помог мне в этой строке, завершив ее добавлением строки к суффиксу.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Массивы в JavaScript начинаются с нуля, поэтому вам нужно проверить i == (test.length - 1), потому что test.length никогда не будет равен последнему index ..

Пример кода:

var test = ["test1","test2","test3","test4"];
var text = "";

for (var i = 0; i < test.length; i++) {
  var str = (i == (test.length - 1)) ? ". Fin" : "<br>";      
  text += test[i] + str;
}

console.log(text);
0 голосов
/ 23 мая 2018

Вот ваша проблема (см. Комментарии):

for (var i = 0; i < test.length; i++) { // We only execute the code when i < length
  if (i == test.length) {               // But here, you try to add something when it's = !
    text += test[i] + ". Fin";
  } else {
    text += test[i] + "<br>";
  }
}

Если вы хотите, чтобы она работала, и нужно , чтобы использовать цикл for, здесь есть два разных решения:

var test = ["test1", "test2", "test3", "test4"];

// First solution: Modify your loop
var text = "";
for (var i = 0; i <= test.length; i++) { // Modified < to <=
  if (i == test.length) {
    text += ". Fin"; // Removed "test[i]", because it doesn't exist when i == length
  } else {
    text += test[i] + "<br>";
  }
}
console.log(text);

// Another shorter solution: Add ". Fin" AFTER the loop
var text = "";
for (var i = 0; i < test.length; i++){
  text += test[i] + "<br>";
}
text += ". Fin";
console.log(text);

⋅ ⋅ ⋅

В любом случае, если вам не нужен цикл for,
есть еще одинболее простое решение с использованием .join():

var test = [
  "test1",
  "test2",
  "test3",
  "test4"
];

var text = test.join('<br>') + '<br>. Fin';
console.log(text);

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...