【问题标题】:Javascript - TypeError: newString.push is not a functionJavascript - TypeError:newString.push 不是函数
【发布时间】:2015-11-19 20:31:40
【问题描述】:

我正在尝试接受一个字符串 (str) 作为输入,然后反向返回该字符串。 (现在它会返回一个数组,因为我没有将输出转换为字符串)我的问题是我不断收到错误 TypeError: newString.push is not a function。我将 newString 声明为一个数组,并试图将元素推入其中。我不明白我做错了什么。

    function FirstReverse(str) { 
      var newString = [ ];
      var eachLetter = str.split("");
      for(i = eachLetter.length; eachLetter.length >= 0; i - 1){
        newString =+ newString.push(eachLetter[i]);     
    }
  return newString; 
}

【问题讨论】:

    标签: javascript typeerror


    【解决方案1】:

    newString = + something

    算术运算会将newString变成一个数字。

    您根本不需要在push 之后重新分配newString

    newString.push(eachLetter[i])   // append to newString
    

    【讨论】:

    • 我对算术运算一无所知。我以为它只是将eachLetter 数组中的任何元素添加到newString
    【解决方案2】:

    更简单的反转字符串的方法:

    "something".split("").reverse().join("")
    

    解决您的问题:

    • eachLetter.length >= 0 i >= 0
    • i 你应该从 eachLetter.length - 1 开始,最后一个索引
    • 不要重新分配newString 数组
    • 如果你不想要无限循环,你应该更新i 的值,i = i - 1
    • 不返回数组,将元素连接起来生成字符串
    function FirstReverse(str) { 
       var newString = [];
       var eachLetter = str.split("");
    
       for (i = eachLetter.length - 1; i >= 0; i = i - 1){
           newString.push(eachLetter[i]);     
       }
    
       return newString.join(""); 
    }
    

    【讨论】:

    • 感谢您的回复!您的解释对理解我的错误最有帮助。我不知道.reverse( )
    【解决方案3】:

    您将newResult.push() 的结果分配(实际上是添加)到newString

    关于Array.push(),返回值是一个数字,它修改了原始数组。 (Array.push())

    你在(无限)for循环中也遇到了一些麻烦..

    最后,你返回的是一个数组,而不是一个字符串。

    试试这个修改:

    function FirstReverse(str) { 
        var newString = [ ];
        var eachLetter = str.split("");
        for(i = eachLetter.length - 1; i >= 0; i--){
            newString.push(eachLetter[i]);
        }
        return newString.join(""); 
    }
    

    你可以避免使用数组:

    function FirstReverse(str) {
        var i, rev = "";
        for(i = str.length - 1; i >= 0; i--) rev += str[i];
    
        return rev;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2018-03-02
      • 2020-07-16
      • 2023-04-08
      • 2015-12-04
      • 2018-02-21
      相关资源
      最近更新 更多