【问题标题】:How do you print a string in reverse using a For loop?如何使用 For 循环反向打印字符串?
【发布时间】:2020-05-22 03:31:07
【问题描述】:

我正在尝试使用 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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用i-1 代替str.length-1i 将遍历字符串中的所有字符。 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(''));

      【讨论】:

        【解决方案3】:

        最简单和最小的方法是把 3 种方法结合起来:

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

        【讨论】:

        • Op 想要使用 for 循环。
        • OP 想要在 holder 数组中反转字符串,例如 [o,l,l,e,h]
        • 他没有提到他必须使用 for 循环,所以我建议了简单的方法
        • 除了他在问题标题中所做的。不是说你的答案是反转字符串的错误方法,如果我需要的话,这对我来说是一种选择。
        【解决方案4】:

        将 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(''));

        【讨论】:

        • OP 想要在 holder 数组中反转字符串,例如 [o,l,l,e,h]
        • 已更新,但相同的差异,只需添加到数组的开头而不是字符串。
        猜你喜欢
        • 2014-02-17
        • 1970-01-01
        • 2017-08-26
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        相关资源
        最近更新 更多