2011-07-10 7 views
0

重複の可能性:
JavaScript: Getting random value from an array
How can I choose an object key at random?javascriptを使用して関連配列からランダムな値を選択しますか?

私たちは、このような配列があるとします。

var MrArray = new Array(5); 
MrArray['one']='oneValue'; 
MrArray['two']='twoValue'; 
MrArray['three']='threeValue'; 
MrArray['four']='fourValue'; 
MrArray['five']='fiveValue'; 

OK? 配列が関連付けられています。 です。文字列キーと文字列値があります。今すぐ !それからランダムな価値をどうやって選ぶことができますか? 編集:私はこのように使用する:

<A href="Array value Here">Array Key Here</a> 

よろしく サム

+0

あなたはJavaScriptの配列について非常に混乱しています。配列は常に索引付けされ、決して連想しません。しかし、配列は特殊なオブジェクトに過ぎず、オブジェクトではコードのようにキーを定義することができます。詳細については、http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/を参照してください。 –

+0

ありがとうございますが、私は同じ時間にKeyとValueを選択したいと思います。 – G0back

答えて

8

メソッドを使用して、我々が作成することができhereを説明しました次の関数:

function randomKey(obj) { 
    var ret; 
    var c = 0; 
    for (var key in obj) 
     if (Math.random() < 1/++c) 
      ret = key; 
    return ret; 
} 

それはとてもMrArrayからランダムな値を取得するには、ランダムキーを返し、次の操作を行います。

var value = MrArray[randomKey(MrArray)]; 

jsPerf benchmark本のスピードや他の回答を比較します。

+0

+1は '1/++ c'です。私は前にそのトリックを見たことはないと思う。 – vhallac

1

ここ:

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

のSrc:How can I choose an object key at random?

関連する問題