我从一个API中获取了一个歌曲数组,Map到它上面,并将数组中的字符串用作音频源。目前我正试图在我的音频播放器Web应用程序中添加随机播放功能,但我不知道从哪里开始。
myzjeezk1#
您可以使用Math.random()函数,该函数返回一个介于0和小于1之间的浮点数,然后将其 * 乘以您的 * 数组 * 的 * 长度,并将该数字传递给Math.floor()函数,并将最终的数字结果用作 * 歌曲 * 数组的索引**。第一个
Math.random()
0
1
Math.floor()
**注意:**上面的这个例子看起来像是在某个点“卡住”了,但这只是它的工作方式,例如,它可以连续 * 两次或10次或更多次 * 得到数字2。
2
这就是为什么我在下面创建了另一个例子,在这个例子中,我将这个 randomized 值(randomNum)存储到一个全局变量(在外部作用域中)(prevNum)。第一次进一步解释 * 如果您感兴趣 * 是使用三元运算符初始化newRandomNum的一部分,以避免 * 可能 * 问题如果您只是使用+1或-1,可能会遇到这样的情况:您尝试访问数组中最后一个元素的索引上方的元素或0下方的索引,这两种情况都将解析为undefined .
randomNum
prevNum
newRandomNum
+1
-1
undefined
1条答案
按热度按时间myzjeezk1#
您可以使用
Math.random()
函数,该函数返回一个介于0
和小于1
之间的浮点数,然后将其 * 乘以您的 * 数组 * 的 * 长度,并将该数字传递给Math.floor()
函数,并将最终的数字结果用作 * 歌曲 * 数组的索引**。第一个
**注意:**上面的这个例子看起来像是在某个点“卡住”了,但这只是它的工作方式,例如,它可以连续 * 两次或10次或更多次 * 得到数字
2
。这就是为什么我在下面创建了另一个例子,在这个例子中,我将这个 randomized 值(
randomNum
)存储到一个全局变量(在外部作用域中)(prevNum
)。第一次
进一步解释 * 如果您感兴趣 * 是使用三元运算符初始化
newRandomNum
的一部分,以避免 * 可能 * 问题如果您只是使用+1
或-1
,可能会遇到这样的情况:您尝试访问数组中最后一个元素的索引上方的元素或0
下方的索引,这两种情况都将解析为undefined
.