如何使用 For 循环反向打印字符串?

问题描述 投票:0回答:5

我正在尝试使用 For 循环反向打印字符串“hello”,结果应该是“olleh”。但是,在将字符串推送到数组后,我无法删除字符串中的最后一个字符。结果,它只打印字符串的最后一个字母。

如何更新此代码,以便循环在将字符串推送到数组后删除字符串中的最后一个字符?

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"));

javascript arrays loops slice
5个回答
3
投票

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
投票

使用

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
投票

最简单、最小的方法是结合 3 种方法:

function reverseString(str) {
    return str.split("").reverse().join("");
}
console.log(reverseString("hello"));


0
投票

function arr(str){
    let reverse = "";
    for( let i = str.length -1; i>=0 ; i-- ){
        reverse += str[i]
    }
    return reverse
}

console.log(arr(" MERN Stack Developer"))


-1
投票

结合 for of 循环和 split(''),您可以拆分单词并将每个字符添加到数组的开头。

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.