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

问题描述

在 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()]这也给出了与上述相同的结果。

为什么会这样?

标签: javascriptreactjsfrontendtostringweb-frontend

解决方案


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

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

您没有将键转换为字符串,而是尝试将迭代器转换为字符串,从而为您提供“[object Array Iterator]”作为字符数组。

你需要做:

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

将所有键转换为字符串


推荐阅读