Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据传递给函数的参数更改变量名?_Javascript - Fatal编程技术网

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;
    }
    

    非常感谢你-工作得很有魅力!!我还没有使用过对象,所以这是一个很好的介绍:)非常感谢你,工作起来很有魅力!!我还没有使用对象,所以这是一个很好的介绍:)