Как вы печатаете строку в обратном порядке, используя For l oop? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь напечатать строку "привет" в обратном порядке, используя For l oop, результат должен быть "olleh". Однако у меня возникают проблемы с удалением последнего символа в строке после его перемещения в массив. В результате он просто печатает последнюю букву строки.

Как я могу обновить этот код, чтобы l oop удалял последний символ в строке после помещения его в массив?

function reverseString(str) {
  let holder = [];

  for (let i = str.length; i > 0; i--) {
    holder.push(str.charAt(str.length - 1));
    str.slice(0, -1);
  }

  return holder;
}

console.log(reverseString("hello"));

Ответы [ 4 ]

3 голосов
/ 06 февраля 2020

String.prototype.slice ()

Метод slice() извлекает часть строки, а возвращает ее как новую строку , без изменения исходной строки.

Необходимо сохранить возвращенную строку обратно в переменную:

function reverseString(str) {
  let holder = [];
  for (let i = str.length; i > 0; i--){
    holder.push(str.charAt(str.length -1));
    str = str.slice(0, -1); // update the variable
  }
  return holder.join(''); // join them to return the string
}

console.log(reverseString("hello"));

Хотя вы можете просто разделить и повернуть, как показано ниже:

function reverseString(str) {
  return str.split('').reverse().join('');
}

console.log(reverseString("hello"));
3 голосов
/ 06 февраля 2020

Используйте i-1 вместо str.length-1. i будет проходить все символы в строке. Slice - медленный метод, поэтому избегайте его, пока у вас нет другого пути

function reverseString(str) {

  let holder = [];

  for (let i = str.length; i > 0; i--) {
    holder.push(str.charAt(i - 1));

  }

  return holder;
}

console.log(reverseString("hello").join(''));
2 голосов
/ 06 февраля 2020

Самый простой и маленький способ сделать это - объединить 3 метода:

function reverseString(str) {
    return str.split("").reverse().join("");
}
console.log(reverseString("hello"));
0 голосов
/ 06 февраля 2020

Объедините a для l oop и разделения (''), и вы можете просто разделить слово и добавить каждый символ в начало массива.

let word = 'hello';
let holder = [];
for(let char of word.split('')) {
  // Add to start of array
  holder.unshift(char);
}
console.log(holder.join(''));
...