有人能用javascript来解释这段代码吗
星号包含在有人能用javascript来解释这段代码吗,javascript,Javascript,星号包含在标签中: {Array(rating).fill().map((u,i)=>(⭐ )} 因此,它给出了评级参数所能接受的星数,但如何给出呢?例如,我们给出评级3值,它将***作为输出。逐步: Array(rating)创建一个rating空元素的数组,因此如果rating为3,则数组(rating)返回[空,空,空] [empty,empty,empty].fill()返回[undefined,undefined,undefined],因为在JavaScript中,不能映射()空值。
标签中:
{Array(rating).fill().map((u,i)=>(⭐ )}
因此,它给出了评级参数所能接受的星数,但如何给出呢?例如,我们给出评级3
值,它将***
作为输出。逐步:
Array(rating)
创建一个rating
空元素的数组,因此如果rating
为3
,则数组(rating)
返回[空,空,空]
[empty,empty,empty].fill()
返回[undefined,undefined,undefined]
,因为在JavaScript中,不能映射()
空值。这是JavaScript的一个有点奇怪的部分,但事实就是如此[undefined,undefined,undefined].map((u,i)=>(⭐ )
将数组转换为[⭐ ,⭐ ,⭐ ]
,这不是有效的JavaScript,但我假设您使用的是React和JSX。它将被编译成带有⭐ 作为其文本,每个因此,此代码段将输出
⭐ ⭐ ⭐
,或任意数量的段落,具体取决于评级值。让我们一步一步来做。通过在终端中打开节点
控制台,跟踪您的机器可能会有所帮助
将整数(rating
)转换为数组将返回长度为rating
-的数组
> Array(5)
[ <5 empty items> ]
接下来我们调用map
,这是一个新的数组,它创建了一个新的数组,其中填充了对调用数组中的每个元素调用所提供函数的结果
在您的示例中,我们正在创建一个新的匿名函数,该函数接受两个参数。当对数组调用map
时,第一个参数是数组中项的索引(我们不使用该索引,因此在本例中,我们用下划线\u
指示该参数未使用)。第二个参数是该数组中的实际项(如我们前面所述,所有5个项都未定义)
因此,使用由
标记封装的星形表情符号,将从映射
新创建的数组填充到评级
-长度
> let rating = 5
undefined
> Array(rating).fill().map((_, i) => ( '<p>⭐</p>' ))
[ '<p>⭐</p>', '<p>⭐</p>', '<p>⭐</p>', '<p>⭐</p>', '<p>⭐</p>' ]
>让额定值=5
未定义
>数组(rating).fill().map((513;,i)=>('⭐ ("))
['⭐ “,”⭐ “,”⭐ “,”⭐ “,”⭐ “]
Array(3)
使用3个未定义的值创建一个数组,在它们上面映射循环,并用星形替换它们。@lawrencerone.fill()
实际上是需要的,因为.map()
跳过空值(创建数组(n)
时产生的特殊JS值)。我通过艰苦的方式学到了:D@RoboRobok是的,你右边的数组(3)
创建了一个长度为3的完全稀疏数组,因此它没有一个自己的项目。它是空的,这也意味着它不能通过数组方法进行迭代,如map
,filter
等.fill()
确实为数组填充了每个索引的未定义的值,包括0
和2
之间的值,因此数组现在不是稀疏的/空的,可以迭代。多谢了,伙计,你解释得很好,是的,我正在使用react。在MERN旅程中一定要:)
> let rating = 5
undefined
> Array(rating).fill().map((_, i) => ( '<p>⭐</p>' ))
[ '<p>⭐</p>', '<p>⭐</p>', '<p>⭐</p>', '<p>⭐</p>', '<p>⭐</p>' ]