如何在JavaScript中获取随机选择对象的键?

时间:2016-07-05 08:56:13

标签: 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 个答案:

答案 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;