2016-07-05 6 views
1

オブジェクトの配列からランダムな要素を選択していますが、その戻り値のキーを取得する方法がわかりません。ランダムに選択されたオブジェクトのキーをJavaScriptで取得する方法は?

{ 
 
    "location": "LA", 
 
    "id": "34", 
 
    "prizes": { 
 
     "1": { 
 
      "prize": "Prize 1", 
 
      "quantity": "6", 
 
      "extracted": "" 
 
     }, 
 
     "3": { 
 
      "prize": "Prize 3", 
 
      "quantity": "10", 
 
      "extracted": "" 
 
     }, 
 
     "4": { 
 
      "prize": "Prize 4", 
 
      "quantity": "10", 
 
      "extracted": "" 
 
     } 
 
    } 
 
}

私は、ランダムな選択私のコードはこれです:私も私最初と言わざるを得ない

var prizes_by_locations = locations[id_prizes].prizes; 
 
var final_prizes = []; 
 

 
for(var x in prizes_by_locations){ 
 
    final_prizes.push(prizes_by_locations[x]); 
 
} 
 

 
var prize = final_prizes[Math.floor(Math.random()*final_prizes.length)]; 
 

 
//here is the random chosen prize but I need to get the key too 
 
var chosen_prize = prize.prize;

私のオブジェクトは、このようになりますいくつかの要素を削除します。そのため、キーは1、3、4です。

答えて

3

それを他の方法で行います:オブジェクトからランダムなキーを選択し、その後、あなたは簡単にも値を取得することができます

var prizes_by_locations = locations[id_prizes].prizes; 
var keys = Object.keys(prizes_by_locations); 
var prize_key = keys[keys.length * Math.random() << 0]; 
var prize_value = prizes_by_locations[prize_key]; 
+0

ありがとうございました。これは私にとって最高の解決策であるようです。 – Ionut

2

正しく理解したら、randomKey変数が必要です。 var prizes_by_locations = locations [id_prizes] .prizes; var final_prizes = [];

for(var x in prizes_by_locations){ 
    final_prizes.push(prizes_by_locations[x]); 
} 
var randomKey = Math.floor(Math.random()*final_prizes.length); 
var prize = final_prizes[randomKey]; 

//here is the random chosen prize but I need to get the key too 
var chosen_prize = prize.prize; 
alert('The key is:' + randomKey); 
1
var prizes_by_locations = locations[id_prizes].prizes; 
var final_prizes = []; 
var keys = [] 

for(var x in prizes_by_locations){ 
    final_prizes.push({ 
     key: x, 
     result: prizes_by_locations[x]); 
} 
} 

var prize = final_prizes[Math.floor(Math.random()*final_prizes.length)]; 

//here is the random chosen prize but I need to get the key too 
var chosen_prize = prize.result.prize; 
var key = prize.key; 
関連する問題