【发布时间】:2020-09-09 23:29:15
【问题描述】:
我编写了一个函数,该函数接受一个包含括号的字符串,遍历该字符串并使用 for 循环计算开括号和闭括号的数量。然后,当开括号的数量大于闭括号的数量时,while 循环应该在字符串上循环,并将闭括号附加到字符串。我的示例代码:
function closeThoseParens(string) {
let openTicker = 0;
let closedTicker=0;
for (let i = 0; i < string.length; i++) {
if (string[i] === '(') {
openTicker++;
console.log(openTicker);
} else if (string[i] === ')') {
closedTicker++;
}
}
while (openTicker > closedTicker){
string += ")"
closedTicker++;
console.log(closedTicker);
}}
调用函数:
let string = '((( )';
closeThoseParens(string)
应该导致字符串 '((( )))' 的值 然而,从函数返回的值似乎只是输入字符串。记录到控制台时,代码显示预期值。
我不确定这里发生了什么,我尝试追加到字符串变量末尾的方式似乎有问题,但我不确定它可能是什么。
【问题讨论】:
-
您不是在修改原始字符串,而是在修改名为
string的局部变量。这就是为什么每次迭代都必须将加法结果重新分配回string的原因。与其尝试改变参数,通常最好还是返回一个新参数。
标签: javascript string while-loop append concatenation