Javascript new Array和join()方法

时间:2012-09-11 18:41:42

标签: javascript

this popular speech的启发我想弄清楚与创建数组有关的一些问题。假设我正在使用:

创建新数组

Array(3)

在控制台我得到:

[undefined, undefined, undefined]

这很明显。假设我正在加入该阵列:

Array(3).join()

作为回应我得到了:

",,"

这也是可以理解的,因为这些是三个空字符串,用逗号分隔,我想。但是当我想要做的时候:

Array(3).join("lorem")

我收到的字符串中只有两个重复的“lorem”:

"loremlorem"

为什么有两个,而不是三个重复的那个词?

5 个答案:

答案 0 :(得分:8)

join使用作为joiner传递的内容将元素连接在一起。所以你有三个空字符串“围绕”lorem s:

|lorem|lorem|

如果不使用空数组,可能会更明显一些:

var arr = [1, 2, 3, 4, 5]; // Like Array(5), except not sparse

arr.join('-and-'); // 1-and-2-and-3-and-4-and-5

顺便说一下,你的第一个例子join输出是不正确的。它应该是,,",,"。 (取决于输出格式。)

答案 1 :(得分:3)

加入需要一个分隔符。 “lorem”取代了以前的逗号。

答案 2 :(得分:2)

Join将数组中的元素与指定的分隔符组合在一起。

所以,由于有3个元素,你只需要2个分隔符(在第1和第2之间,在第2和第3之间)。

var a = [1,2,3];
a.join(','); //1,2,3
a.join('test'); // 1test2test3

答案 3 :(得分:2)

查看join文档。

您传递给join函数的内容将用作数组元素之间的分隔符。当您使用Array(3)声明数组时,您将创建一个包含三个元素的数组。 join方法在这些元素之间插入分隔符,因此您只能看到两个“lorem”。

实际上,您看到的是:blank lorem blank lorem blank。其中blank是数组的空元素。

尝试执行以下操作:

var fruits = ["banana", "orange", "apple"]
fruits.join("lorem")

会打印

bananaloremorangeloremapple

答案 4 :(得分:1)

如果您有一个包含3个成员的数组,则.join是成员之间的填充,因此应该只有两个连接字符串。

因此,您的第二个输出是正确的。

使用.join()的第一个输出,似乎是显示错误或对您的测试代码的错误陈述。

.join()的默认值为",",因此:

new Array(3).join();

应该给你这个:

",,"

您显示的输出:

[, ,]
如果没有new Array(3),只需在console中输入.join(),就更有可能