2017-05-30 90 views
0

例如,如果我有:如何在随机选择的对象内创建一个随机属性?

var weapon = [ "sword", "mace", "staff"]; 

var swordtype = [ "long", "short"]; 

var stafftype = [ "quarter", "magic"]; 

和我的脚本随机选择“剑”在从武器可变我的HTML p标签来显示。

我怎么能说如果我的代码从武器变量中随机选择了“剑”,它也会随机选择一个“剑形”来配合它呢?使输出成为“长剑”还是“短剑”?

+0

'武器= {剑: “长”, “短”],锏: “重”, “轻”],工作人员:[“四分之一”,“魔术”}?或者'[{type:“sword”,subtypes:[“long”,“short”]},{type:“staff”,subtypes:[“quarter”,“magic”]}]'。或者是其他类似的结构,其中每一类武器的变体都与其直接相关。 – nnnnnn

回答

0

您需要关联相关数据。所以,你的结构可能是这样的:

// Use objects, not arrays to store key/value pairs 
 
var weapons = { 
 
    sword:["long","short", "broad"], 
 
    mace: ["standard", "long", "short"], 
 
    staff: ["quarter", "magic", "wizard"], 
 
    "nuclear missle": ["10 megaton", "20 megaton", "50 kiloton"], 
 
    dagger: ["standard", "poison"] 
 
}; 
 

 
// Function for selecting random weapon 
 

 
function getRandomWeapon(){ 
 
    // Choose random weapon as an index from the weapons object: 
 
    var weaponNum = Math.floor(Math.random() * Object.keys(weapons).length); 
 
    
 
    // Get the property name that corresponds to that key number: 
 
    var weapon = Object.keys(weapons)[weaponNum]; 
 

 
    // Choose random weapon type as an index from the random weapon selected above: 
 
    var specificWeaponNum = Math.floor(Math.random() * weapons[weapon].length); 
 
    
 
    // Get the array value associated with that index 
 
    var specifcWeapon = weapons[Object.keys(weapons)[weaponNum]][specificWeaponNum]; 
 
    return specifcWeapon + " " + weapon; 
 
} 
 

 
document.querySelector("button").addEventListener("click", function(){ 
 
    document.getElementById("weapon").textContent = getRandomWeapon(); 
 
});
<div>You have a: <span id="weapon"></span></div> 
 
<button>Get Weapon</button>

+0

这正是我所寻找的。非常感谢! – evolvingsymmetry