在JavaScript中反转字符串而不使用reverse()

高分请教下,在JavaScript中反转字符串而不使用reverse()
最新回答
月

2026-10-26 01:25:19

答案

函数 reverseString 通过从字符串末尾到开头逐个字符迭代,并将每个字符追加到新字符串的方式实现反转,避免了直接使用内置的 reverse() 方法。

详细解释
  • 函数定义与初始化

    function reverseString(str) { let reversed = '';}

    定义函数 reverseString,接收参数 str(待反转的字符串)。

    初始化空字符串 reversed,用于存储反转后的结果。

  • 循环逻辑与字符访问

    for (i = str.length - 1; i >= 0; i--) { reversed += str[i];}

    循环条件:从字符串最后一个字符的索引(str.length - 1)开始,递减至索引 0(包含),确保覆盖所有字符。

    字符访问:通过 str[i] 获取当前索引 i 处的字符。例如:

    若 str = "hello",则 str[4] 是 'o',str[3] 是 'l'。

    字符串拼接:使用 += 运算符将当前字符 str[i] 追加到 reversed 的末尾,逐步构建反转后的字符串。

  • 示例迭代过程(以 str = "abc" 为例)

    初始状态:reversed = ""(空字符串)。

    迭代 1(i=2):

    str[2] 是 'c',reversed 更新为 "" + "c" = "c"。

    迭代 2(i=1):

    str[1] 是 'b',reversed 更新为 "c" + "b" = "cb"。

    迭代 3(i=0):

    str[0] 是 'a',reversed 更新为 "cb" + "a" = "cba"。

    最终结果:reversed = "cba"。

  • 返回值与输出

    return reversed;

    函数返回构建完成的 reversed 字符串。

    示例调用:const originalString = "Hello world";const reveresedString = reverseString(originalString);console.log("original String", originalString); // 输出: "Hello world"console.log("reversed string", reveresedString); // 输出: "dlrow olleH"

  • 关键点说明

    += 运算符的作用:简化字符串的增量构建,无需额外数组或复杂逻辑,直接在原字符串末尾追加字符。

    索引范围:循环条件 i >= 0 确保第一个字符(索引 0)被包含在反转结果中。原代码中循环条件为 i > 0,会导致遗漏第一个字符,需修正为 i >= 0 以正确处理所有情况。

修正后的完整代码function reverseString(str) { let reversed = ''; for (let i = str.length - 1; i >= 0; i--) { reversed += str[i]; } return reversed;}const originalString = "Hello world";const reveresedString = reverseString(originalString);console.log("original String", originalString); // "Hello world"console.log("reversed string", reveresedString); // "dlrow olleH"总结

该函数通过从后向前遍历字符串并拼接字符,高效实现了反转功能,避免了使用内置方法,同时利用 += 运算符简化了代码逻辑。修正循环条件后,可正确处理所有字符,包括首字符。