簡體   English   中英

如何隨機選擇對象鍵?

[英]How can I choose an object key at random?

我有以下代碼;

namedarray['India']='New Delhi';
namedarray['Australia']='Canberra';
namedarray['Indonasia']='Jakarta';
namedarray['Iran']='Tehrani';
namedarray['Iraq']='Bhagdad';
namedarray['Nijeria']='Abuja';

document.getElementById('question').innerHTML="Q." +namedarray['Nepal']+"  is capital for which country";

我想代替尼泊爾,隨意從物體中選擇一把鑰匙。 我怎樣才能做到這一點?

嘗試這個:

function fetch_random(obj) {
    var temp_key, keys = [];
    for(temp_key in obj) {
       if(obj.hasOwnProperty(temp_key)) {
           keys.push(temp_key);
       }
    }
    return obj[keys[Math.floor(Math.random() * keys.length)]];
}

var random_name = fetch_random(namedarray);
document.getElementById('question').innerHTML="Q." + random_name +"  is capital for which country"

如果您能夠使用庫,您可能會發現Lo-Dash JS庫對於這種情況有很多非常有用的方法。 在這種情況下,請繼續檢查sample()。

(注意Lo-Dash約定是命名庫對象_。不要忘記在同一頁面中檢查安裝以為項目設置它。)

_.sample([1, 2, 3, 4]);
// → 2

在你的情況下,繼續使用:

_.sample(namedarray)

並在上下文中:

document.getElementById('question').innerHTML="Q." +_.sample(namedarray)+"  is capital for which country";

另外,您可以使用更簡單的表示法來填充數組。

namedarray = {
    India : 'New Delhi',
    Australia : 'Canberra',
    Indonasia : 'Jakarta',
    Iran : 'Tehrani',
    Iraq : 'Bhagdad',
    Nijeria : 'Abuja'
}

我只想使用兩個數組作為數據。

var countries = ['India', 'Australia', 'Indonasia', ... ];
var capitols = ['New Delhi', 'Canberra', 'Jakarta', ...];

然后插入到您的文本中:

var index = Math.floor(Math.random() * capitols.length);
document.getElementById('question').innerHTML="Q." +capitols[index]+"  is capital for which country";

然后,您可以使用index變量稍后查找答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM