为什么 Array(“1”,“2”,“3”).join() 在 JavaScript 中将字符串转换为数字

Why does Array("1","2","3").join() convert strings to numbers in JavaScript?

本文关键字:字符串 数字 JavaScript 转换 Array 为什么 join      更新时间:2023-09-26

我有一个JavaScript数字数组,比如

Array("1","2","3") 

我想将其转换为一个字符串,保留每个数字周围的引号,如下所示

'"1","2","3"'

但是 Array.join() 和 Array.toString() 函数去掉了引号。

"1,2,3"

如何将我的数组转换为保留引号的字符串?

定义字符串的引号是javascript语言的一部分,而不是字符串本身的一部分。

如果希望也连接引号,则应在字符串中包含引号

Array("'"1'"","'"2'"","'"3'"")

它没有。字符串周围的引号是一种符号,告诉系统您要创建一个字符串;它们不是字符串本身的一部分。所以当你加入["1","2","3"]时,你会得到"123",因为这是三个字符串的内容。它恰好看起来和数字一样,但这只是一个巧合。

有几种方法可以将引号添加到字符串中。通常,您需要以某种方式逃离它们。在 JavaScript 中执行此操作的最简单方法是在要转义的字符前面放置一个反斜杠 (''),如下所示:

Array("'"1'"","'"2"'","'"3'")

如果您真的想要一个反斜杠字符,那么当您转义它时,它看起来像两个反斜杠 ('''')。事实上,我必须这样做才能在此回复中键入反斜杠。

JavaScript 中还有另一个选项:单引号字符串。在 JavaScript 中,单引号字符串和双引号字符串之间的唯一区别是每种类型都可以包含其他类型的引号而不必对其进行转义,因此您可以执行以下操作:

Array('"1"','"2"','"3"')

或者,如果您希望在数字两边使用单引号而不是双引号,则可以这样做:

Array("'1'","'2'","'3'")

但要小心单引号字符串。JavaScript 对单引号和双引号字符串的处理方式几乎相同,但并非所有语言都如此。例如,在 C 和 C++ 中,单引号"字符串"只能是一个字符长,而双引号字符串可以是任意长度。Perl、PHP 和 Ruby 允许这两种类型为任意长度,但不对单引号字符串执行变量替换。如果你使用的唯一语言是JavaScript,那么这没什么大不了的,但它可能会导致一些陷阱,如果你同时使用多种语言,你需要注意这些陷阱。

每个数字周围的引号用于让 Javascript 知道引号括起来的对象实际上是字符串,因此它们不是字符串的一部分

Array('"1"', '"2"', '"3"'); 

应该工作。

嗨,

你可以这样做

var a = ''"'+Array("1","2","3").join('","')+''"'