【问题标题】:Concat method returns empty string while + operator works fine [duplicate]Concat 方法返回空字符串,而 + 运算符工作正常 [重复]
【发布时间】:2021-07-18 18:57:14
【问题描述】:

我正在编写一个程序来连接一个字符串以使其重复多次,但是在使用concat 方法时它总是返回一个空字符串。我已经使用+ 运算符解决了这个问题。但我仍然想弄清楚为什么concat 返回的是空字符串。

这里是代码

let repeatStr = (str, num) => {
    let newStr = '';
    for(let i = 0; i < num; i++){
        newStr.concat(str); 
    }
    return newStr;
}

【问题讨论】:

标签: javascript concatenation


【解决方案1】:

我相信这是因为concat 方法没有就地修改字符串,您需要将其结果分配给某个变量。如果您将代码中的那一行替换为 newStr = newStr.concat(str);,它应该可以正常工作。

【讨论】:

    【解决方案2】:

    这是因为.concat() 返回一个新字符串,而原来的字符串未修改。您可以重新分配给同一个变量。

    注意:您也可以使用+ 运算符。

    let repeatStr = (str, num) => {
        let newStr = '';
        for(let i = 0; i < num; i++){
            //newStr = newStr.concat(str); //Both work
            newStr += str;
        }
        return newStr;
    }
    
    console.log(repeatStr('x',3));

    【讨论】:

    • concat 返回字符串不是array
    • @Joseph 是的,这适用于字符串。改变了措辞。顺便说一句,concat 是字符串和数组原型的方法。它在这两种情况下都返回新值。
    • 是的,你是对的,但在这种情况下,你说的是string而不是array
    【解决方案3】:

    如果你在MDN中查看concat的定义

    concat() 方法将字符串参数连接到 调用字符串并返回一个新字符串

    这意味着它不会更改变量的旧值 所以你只需要用新值重新分配你的变量

    let repeatStr = (str, num) => {
        let newStr = '';
        for(let i = 0; i < num; i++){
           newStr = newStr.concat(str); 
        }
        return newStr;
    }
    
    console.log(repeatStr('welcome', 2))

    还有另一个简单的解决方案,您可以像这样使用 repeat 用于此目的的函数

    console.log("welcome".repeat(3))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多