(...Array([random number]).keys().toString()) 为什么这个表达式的长度和值总是给出相同的结果?

(...Array([random number]).keys().toString()) why the length and values of this expression always gives the same result?

在Javascript中,使用扩展运算符我们可以迭代数组。

[...Array(5).keys()] 这给出了结果 ->

[0,1,2,3,4]

当我尝试将这些数字转换为字符串时

[...Array(5).keys().toString()] 这给出了结果 ->

["[", "o", "b", "j", "e", "c", "t", " ", "A", "r", "r", "a", "y", " ", "I", "t", "e", "r", "a", "t", "o", "r", "]"]

[...Array(10).keys().toString()] 这也给出了与上面相同的结果。

为什么会这样?

Array(5).keys() 是一个数组迭代器。当你这样做时

[...Array(5).keys().toString()] 

您没有将键转换为字符串,但您正在尝试将迭代器转换为字符串,这会为您提供“[object Array Iterator]”作为字符数组。

您需要做的:

[...Array(5).keys()].map(k => k.toString())

将所有键转换为字符串