Javascript 如何根据传递给函数的参数更改变量名?
我有一个名为Javascript 如何根据传递给函数的参数更改变量名?,javascript,Javascript,我有一个名为nameGenerator()的函数,它将变量category作为参数 在定义此函数之前,我有两对字列表数组:djentWords1和djentWords2,然后是hardcoreWords1和hardcoreWords2 nameGenerator()定义以下变量: firstNum和secondNum firstWord和secondWord bandName 该函数生成两个随机数(firstNum和secondNum),介于0和djentWords1和djentWords2或h
nameGenerator()
的函数,它将变量category
作为参数
在定义此函数之前,我有两对字列表数组:djentWords1
和djentWords2
,然后是hardcoreWords1
和hardcoreWords2
nameGenerator()
定义以下变量:
firstNum
和secondNum
firstWord
和secondWord
bandName
firstNum
和secondNum
),介于0和djentWords1
和djentWords2
或hardcoreWords1
和hardcoreWords2
之间。我的问题是:我能否传递nameGenerator()
一个类似“djent”或“hardcore”的参数,并基于该参数,让它使用适当的数组长度来生成随机数?以下是函数的原样:
//First category: djent
var djentWords1 = ["Aman", "Soul", "Cloud", "Calculate", "Pythagoran"];
var djentWords2 = ["NaaKi", "Circlet", "Cykul", "Consciousness", "Daaka"];
//Second category: hardcore
var hardcoreWords1 = ["SMASH", "RAGE", "LIFE", "THESE", "FIRST", "BRASS", "LAST"];
var hardcoreWords2 = ["FIST", "FIGHTER", "BREAKER", "SMASHER", "RUINER", "DAYS", "CHANCE"];
function nameGenerator (category){
//Randomize
var firstNum = Math.floor(Math.random() * categoryWords1.length); //categoryWords1 would either be djentWords1 or hardcoreWords1, based on the parameter passed to the function
var secondNum = Math.floor(Math.random() * categoryWords2.length); //categoryWords2 would either be djentWords2 or hardcoreWords2, based on the parameter passed to the function
var firstWord = categoryWords1[firstNum]; //firstWord = the word whose position corresponds to the first randomly-generated number
var secondWord = categoryWords2[secondNum]; //secondWord = the word whose position corresponds to the second randomly-generated number
var bandName = firstWord + secondWord;
}
提前谢谢-希望这不会太让人困惑。非常感谢所有帮助。为什么不使用对象(关联数组)
为什么不使用对象(关联数组)
您需要将这些变量声明为数组属性。试试这个:
var djent = {
words1 : ["Aman", "Soul", "Cloud", "Calculate", "Pythagoran"],
words2 : ["NaaKi", "Circlet", "Cykul", "Consciousness", "Daaka"]
}
var hardcore = {
words1 : ["SMASH", "RAGE", "LIFE", "THESE", "FIRST", "BRASS", "LAST"],
words2 : ["FIST", "FIGHTER", "BREAKER", "SMASHER", "RUINER", "DAYS", "CHANCE"]
}
function nameGenerator (category){
var firstNum = Math.floor(Math.random() * window[category].words1.length)
, secondNum = Math.floor(Math.random() * window[category].words2.length)
, firstWord = window[category].words1[firstNum]
, secondWord = window[category].words2[secondNum]
, bandName = firstWord + secondWord;
return bandName;
}
您需要将这些变量声明为数组属性。试试这个:
var djent = {
words1 : ["Aman", "Soul", "Cloud", "Calculate", "Pythagoran"],
words2 : ["NaaKi", "Circlet", "Cykul", "Consciousness", "Daaka"]
}
var hardcore = {
words1 : ["SMASH", "RAGE", "LIFE", "THESE", "FIRST", "BRASS", "LAST"],
words2 : ["FIST", "FIGHTER", "BREAKER", "SMASHER", "RUINER", "DAYS", "CHANCE"]
}
function nameGenerator (category){
var firstNum = Math.floor(Math.random() * window[category].words1.length)
, secondNum = Math.floor(Math.random() * window[category].words2.length)
, firstWord = window[category].words1[firstNum]
, secondWord = window[category].words2[secondNum]
, bandName = firstWord + secondWord;
return bandName;
}
非常感谢你-工作得很有魅力!!我还没有使用过对象,所以这是一个很好的介绍:)非常感谢你,工作起来很有魅力!!我还没有使用对象,所以这是一个很好的介绍:)