我从一个对象数组中选择一个随机元素,我不知道如何获取该返回值的键。我的对象看起来像这样:
{
"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的原因。
答案 0 :(得分: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];
答案 1 :(得分: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);
答案 2 :(得分: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;