如何在 JavaScript 中就地反转字符串?

2022-08-29 23:01:26

当字符串通过 return 语句传递给函数时,如何在 JavaScript 中就地反转字符串,而不使用内置函数(等)?.reverse().charAt()


答案 1

只要您正在处理简单的ASCII字符,并且您乐于使用内置函数,这将起作用:

function reverse(s){
    return s.split("").reverse().join("");
}

如果您需要支持 UTF-16 或其他多字节字符的解决方案,请注意,此函数将提供无效的 unicode 字符串或看起来很有趣的有效字符串。您可能需要考虑这个答案

[...s] 是 Unicode 感知的,一个小的编辑给出:-

function reverse(s){
    return [...s].reverse().join("");
}

答案 2

以下技术(或类似技术)通常用于反转JavaScript中的字符串:

// Don’t use this!
var naiveReverse = function(string) {
    return string.split('').reverse().join('');
}

事实上,到目前为止发布的所有答案都是这种模式的变体。但是,此解决方案存在一些问题。例如:

naiveReverse('foo