大家好!,我在JavaScript上完成了几个简短的课程,现在我转到了has : JavaScript,这是一件很有趣的事情,正在帮助巩固我的学习。不过,我确实遇到了一些我不明白的事情。在下面的代码中,我了解程序在执行时通常会做什么,但是在试图跟踪执行的每一步时,我意识到我被特定段的“什么/为什么/如何”弄糊涂了。下面是我正在查看的示例程序的代码:
function makePhrases() {
var words1 = ["24/7", "multi-tier", "30,000 foot", "B-to-B", "win-win"];
var words2 = ["empowered", "value-added", "oriented", "focused", "aligned"];
var words3 = ["process", "solution", "tipping-point", "strategy", "vision"];
var rand1 = Math.floor(Math.random() * words1.length);
var rand2 = Math.floor(Math.random() * words2.length);
var rand3 = Math.floor(Math.random() * words3.length);
var phrase = words1[rand1] + " " + words2[rand2] + " " + words3[rand3];
alert(phrase);
}
makePhrases();这是我一直困惑的部分:
var rand1 = Math.floor(Math.random() * words1.length);
var rand2 = Math.floor(Math.random() * words2.length);
var rand3 = Math.floor(Math.random() * words3.length);我知道,是代码的一部分随机选择了每个数组中的哪个项来形成新的“随机短语”,但我不明白它是如何做到的。我之前也不知道Math.random或Math.floor可以应用于字符串(必须是因为它们在数组中,实际上是一个数字?),也不知道如何/为什么对字符串使用Math.random或Math.floor。
另外,为什么我们需要在这个化身中使用.length呢?是干什么的呢?我感谢你在这里的智慧,并花时间帮助那些刚开始编写代码,但仍然有很多东西需要学习的人!
发布于 2015-04-30 16:51:36
让我们看看代码:
var rand1 = Math.floor(Math.random() * words1.length);Math.random()在0和0.999999..之间返回一个数字。
words1是可供选择的单词列表。
words1.length是列表的大小、条目的数量、本例中的5。
Math.random() * words1.length在0和4.99999..之间返回一个数字。
最后,使用Math.floor()获得0和4之间的整数。
然后,这个数字在words1中用作索引,因此words1[rand1]。
因此,Math操作永远不会在字符串上使用,只在最后一步获取字符串。
发布于 2015-04-30 16:49:02
正在发生的一切是,Math.random()被用作相应数组( '.length‘属性)中元素数的乘数,以创建索引值。它不应用于字符串;只是作为表达式的一部分来确定字符串数组中的索引。
发布于 2015-04-30 16:51:27
您想从数组中选择一个随机元素。因此,您需要一个索引,换句话说,从0到4 (因为您的长度是5)的随机数。Math.random将给出0和1之间的随机数(不包括1)。因此,要将其转换为0到4之间的随机数,需要乘以5的长度。
然后,由于我们需要一个整数,而不是浮点数,所以我们使用Math.floor将其截断为整数。
https://stackoverflow.com/questions/29973409
复制相似问题