2010-12-13 10 views
1

私は以下のコードを持っています。ネパールの代わりにランダムにオブジェクトキーを選択するにはどうすればよいですか?

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

、私はランダムにオブジェクトからキーを選択します。これどうやってするの?

+6

** OBJECTS彼らは**が**連想配列をオブジェクトと呼ばている** ** ** **順不同あるJavaScriptのオブジェクト**並べられ、それは私の薬です重要な違い...です... –

+2

@Ivo私はあなたが好きなら雑草を持っている... :) –

答えて

3

これを試してみてください:私はちょうどデータのための2つのアレイを使用することになり

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" 
+0

ありがとう..しかし、ここでobjと何がtemp_keyであり、なぜ私はキーを使用するのか説明することができます[]ここに私の例plzに基づいて.. – Mihir

+0

@ Mihir 'obj'は渡されるオブジェクトです。オブジェクトのすべてのプロパティを反復処理し、それを配列に追加します。この配列にキーの配列のランダム要素を返します。オブジェクトに渡して実際の値を取り出します。 –

+5

** OBJECT!=== ASSOCIATIVE ARRAY。 RAAAAAAAAAGE !!! ** –

0

。あなたは、その後にも後に答えを探すためにindex変数を使用することができます

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

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

はその後で、あなたのテキストに挿入します。

+0

はいあなたは正しいが、それは名前付き配列には適用されません..それは普通の配列のためだけです私は名前付き配列のための答えが必要です..ありがとう – Mihir

0

ライブラリを使用できる場合は、Lo-Dash JSライブラリにこのような場合に非常に便利な方法がたくさんあることがわかります。この場合、sample()をチェックしてください。

(LO-ダッシュ規約は_ライブラリオブジェクトを命名される。 は、あなたのプロジェクトのためにそれを設定するには、同じページで、インストールをチェックすることを忘れないでください。)あなたの場合

_.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' 
} 
関連する問題