gpt4 book ai didi

javascript - 为什么我的反向字符串缺少逗号? (Freecodecamp 初学者算法示例 1)

转载 作者:行者123 更新时间:2023-11-28 17:59:54 24 4
gpt4 key购买 nike

我正在参加 Freecodecamp 算法挑战,因为我是编程新手。问题描述如下:

Reverse the provided string. You may need to turn the string into an array before you can reverse it. Your result must be a string.

我接受了将字符串转换为数组的建议,但输出有一些问题。这是我的实现:

 function reverseString(str) {
var myAr = str.split("");
newString = myAr.reverse().toString().replace(/,/g,"");
return newString;
}

这对于某些字符串效果很好,例如hello world,但不适用于带逗号的字符串,例如你好,世界!

我的预期输出是 !dlrow ,olleh 但我得到 !dlrow olleh

为什么我的代码失败了?我该怎么做才能克服这个问题?

最佳答案

正如评论中已经指出的, String.split("") 的“逆”是 Array.join("")这可以避免输入字符串包含逗号时出现问题。

为什么 myAr.reverse().toString().replace(/,/g,"") 会导致逗号问题?让我们看看当我们提供带有逗号的字符串时会发生什么:

reverseString('one, two'); // returns "owt eno" - missing the comma
  1. 您首先将此字符串拆分为字符数组:

    myAr = str.split(""); // evaluates to ["o", "n", "e", ",", " ", "t", "w", "o"]
  2. 然后,反转数组:

    myAr.reverse() // evaluates to ["o", "w", "t", " ", ",", "e", "n", "o"]
  3. 接下来,将反转的数组转换为字符串:

    myAr.reverse().toString() // evaluates to "o,w,t, ,,,e,n,o"
  4. 最后,删除所有逗号:

    myAr.reverse().toString().replace(/,/g,""); // evaluates to "owt eno"

您会看到,将数组转换为字符串(步骤 3)等于用逗号连接所有元素。它与执行 array.join(",") 相同。现在,通过从该字符串中删除所有逗号(在步骤 4 中),不幸的是,您也删除了作为输入一部分的那些逗号。无法区分“真正的”逗号和通过连接数组引入的逗号(在步骤 3 中)。

我还建议进行一些命名更改,并使用 var 将当前全局变量 newString 声明为局部变量,或者立即返回它而不引入新变量:

function reverseString(string) {
var chars = string.split("");
return chars.reverse().join("");
}

console.log(reverseString("hello"));

如果您想避免使用内置的 Array.reverse 函数,请查看此问题的答案:reverse-string-in-javascript-without-using-reverse

关于javascript - 为什么我的反向字符串缺少逗号? (Freecodecamp 初学者算法示例 1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43711576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com