Я пытаюсь перевернуть строку с помощью JavaScript. Вот мой код:

<!DOCTYPE html>
<html>
  <body>
    <p id = "test"></p>    
    <script>
      var a = prompt("Enter anything to reverse", "Type Here");
      var b;
      var c;
      var d = a.length;
      for (i=d;i>=1;i--){
        b = a.substr(i,1);
        c = c + b;
      };
      document.getElementById("test").innerHTML = "The reverse is " + c;
    </script>
  </body>
</html>

Теперь выводим undefined. Пожалуйста помоги!

1
uvrichest 11 Янв 2017 в 17:03

4 ответа

Лучший ответ

1) При выполнении var c; это undefined, поэтому c = c + b выполняет undefined + char

2) Массивы индексируются 0, поэтому вы должны начинаться с length - 1 и заканчиваться индексом 0.

Вот рабочая версия:

var a = prompt("Enter anything to reverse", "Type Here");
var b;
var c = "";
var d = a.length;
for (i= d - 1;i >= 0;i--){
  b = a.substr(i,1);
  c = c + b;
};
document.getElementById("test").innerHTML = "The reverse is " + c;
<!DOCTYPE html>
<html>
  <body>
    <p id = "test"></p>    
  </body>
</html>
4
Mosh Feu 11 Янв 2017 в 14:09

Как кто-то сказал в комментариях, вам нужно инициализировать вашу переменную c. Вам также нужно начать с a.length-1.

var a = prompt("Enter anything to reverse", "Type Here");
var b;
var c = "";
var d = a.length-1;
for (i = d; i >= 0; i--) {
  b = a.substr(i, 1);
  c = c + b;
};
document.getElementById("test").innerHTML = "The reverse is " + c;
<p id="test"></p>

Но есть более простое решение этого:

var a = prompt("Enter anything to reverse", "Type Here");
var c = a.split("").reverse().join("");
document.getElementById("test").innerHTML = "The reverse is " + c;
<p id="test"></p>
0
Chris 11 Янв 2017 в 14:11
<!DOCTYPE html>
<html>

<body>
  <p id="test"></p>
  <script>
    var a = prompt("Enter anything to reverse", "Type Here");
    var b;
    var c = '';
    var d = a.length;
    console.log(d)
    for (i = d - 1; i >= 0; i--) {
      b = a.substr(i, 1);
      c += b;
    };
    document.getElementById("test").innerHTML = "The reverse is " + c;
  </script>
</body>

</html>
0
C.Raf.T 11 Янв 2017 в 14:10

Чтобы перевернуть строку, сначала split() ее в массив, reverse() массив, затем join() массив для перестройки строки

return a.split("").reverse().join("");
1
allnodcoms 11 Янв 2017 в 14:13