如何随机选择对象键?

时间:2010-12-13 10:46:56

标签: javascript

我有以下代码;

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

代替尼泊尔,我想随意从物体中选择一把钥匙。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

试试这个:

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"

答案 1 :(得分:0)

我只会使用两个数组来存储数据。

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变量稍后查找答案。

答案 2 :(得分:0)

如果你能够使用库,你可能会发现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'
}