JavaScript循环迭代能否使用上一次的运算结果作为下一次的输入?
问题原因
你当前代码的错误有两个:
- 每次循环都使用最初传入的原始字符串调用
swap,没有复用前一次修改后的结果 - 把每次
swap返回的单次交换结果做了拼接,而不是存储为当前最新的字符串
修改后的代码
//given function 保持不变 function swap(str, first, last){ str = str.split(''); let firstIndex = str[first]; str[first] = str[last]; str[last] = firstIndex; str = str.join("").toString() return str; } let word = "Hello" function reverseSwap(str) { // 初始化当前字符串为原始入参 let currentStr = str for (let i = 0; i < str.length/2; i++) { // 每次用最新的currentStr调用swap,返回值直接覆盖更新currentStr currentStr = swap(currentStr, i, str.length -1 - i); } return currentStr; } console.log(reverseSwap(word)) // 输出 olleH
实现逻辑说明
- 第一次循环:用原始值
Hello调用swap(0,4),得到oellH赋值给currentStr - 第二次循环:用
oellH调用swap(1,3),得到olleH赋值给currentStr - 第三次循环:用
olleH调用swap(2,2),字符串无变化,currentStr保持olleH - 循环结束直接返回最终的
currentStr即可
内容的提问来源于stack exchange,提问作者kBoeh
相关产品推荐
相关产品推荐

