我有四个阵列-花,树,小动物和歌曲。
我有四个对应的功能-flower(),tree(),critter()和song()。
在上面的每个函数中,我都调用了math.random函数来从特定数组中检索随机单词。例如,在我的flower()函数中,我有:
answer = flowers[Math.floor(Math.random() * flowers.length)];
我发现,为了生成随机单词,我还需要全局运行我的math.random函数。这是我的问题。我不知道在不分配变量的情况下创建math.random函数的方法。所以在全球范围内我有这个:
function randomWord() {
answer = songs[Math.floor(Math.random() * songs.length)];
}
所以有时当我在花卉类别中时,我的花卉数组中的一个单词会出现-但有时会出现一首歌,因为我必须将其发布到全球才能完全使用。
我不知道如何解决它,尽管有很多关于数组的math.floor函数的问题-我还没有找到有关如何处理这样的多个数组的信息。
我想知道对于全局调用的math.floor函数,是否可以使用通用词代替特定的可变词?还是if-else语句?我被困住了,不胜感激。谢谢。
编辑添加:
@ KevinWallis,这是直接从我的代码中粘贴的:
let answer = "";
function randomWord() {
answer = songs[Math.floor(Math.random() * songs.length)];
}
function flower() {
document.getElementById("main").style.display = 'none';
document.getElementById("play").style.display = "block";
answer = flowers[Math.floor(Math.random() * flowers.length)];
word = flowers[answer];
document.getElementById("categoryName").innerHTML = "Types of Flowers";
updateTreePicture();
randomWord();
generateButtons();
guessedWord();
}
更新:我只想发布最终的修复程序:
function randomWord() {
if (categoryName === 'Flowers') {
answer = flowers[Math.floor(Math.random() * flowers.length)];
} else if (categoryName === 'Trees') {
answer = trees[Math.floor(Math.random() * trees.length)];
} else if (categoryName === 'Critters') {
answer = critters[Math.floor(Math.random() * critters.length)];
} else if (categoryName === 'Songs') {
answer = songs[Math.floor(Math.random() * songs.length)];
}
}
您可以为歌曲,花朵等创建多个random
函数。这是调用此类随机函数并使用返回值的示例。
function randomSong() {
songs = ...;
return songs[Math.floor(Math.random() * songs.length)];
}
function randomFlower() {
flowers = ...;
return flowers[Math.floor(Math.random() * flowers.length)];
}
...
function flower() {
document.getElementById("main").style.display = 'none';
document.getElementById("play").style.display = "block";
// use the selected flower instead of the global answer for all
flower = randomFlower();
document.getElementById("categoryName").innerHTML = "Types of Flowers";
// e.g. the flower can be used as parameter
updateTreePicture(flower);
generateButtons();
guessedWord();
}
我认为这里有一些主要的事情对您有所帮助,也许会阻止您专注于将所有内容存储在单个全局变量中,作为在任何地方访问数据的方法:
function getTheNumberOne(){
return 1;
}
var theNumberOne = getTheNumberOne();
console.log(theNumberOne);
function getNumberPlusTen(number){
return number + 10;
}
var numberPlusTen = getNumberPlusTen(5);
console.log(numberPlusTen);
<script src="https://randojs.com/1.0.0.js"></script>
粘贴到html文档的head标签中,然后您就可以像这样简单易懂地处理随机性了:var flowers = ["rose", "sunflower", "tulip"];
var randomFlower = rando(flowers).value;
console.log(randomFlower);
<script src="https://randojs.com/1.0.0.js"></script>
var flowers = ["rose", "sunflower", "tulip"];
var trees = ["birch", "oak", "maple"];
var randomFlower = "";
var randomTree = "";
function assignRandomValues(){
randomFlower = rando(flowers).value;
randomTree = rando(trees).value;
}
function logValues(){
console.log(randomFlower);
console.log(randomTree);
}
assignRandomValues();
logValues();
<script src="https://randojs.com/1.0.0.js"></script>
我无法提供任何其他建议,因为我没有看到其余的代码,但是这些概念将为您提供良好的指导。