1. ホーム
  2. javascript

[解決済み] Javascriptのオブジェクトからランダムにプロパティを選択する

2022-11-15 16:19:36

質問

例えば {'cat':'meow','dog':'woof' ...} のようなJavascriptオブジェクトがあるとします。 私が思いついたこの長ったらしい方法よりも、オブジェクトからランダムなプロパティを選択する、より簡潔な方法はありますか。

function pickRandomProperty(obj) {
    var prop, len = 0, randomPos, pos = 0;
    for (prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            len += 1;
        }
    }
    randomPos = Math.floor(Math.random() * len);
    for (prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            if (pos === randomPos) {
                return prop;
            }
            pos += 1;
        }
    }       
}

どのように解決するのですか?

選択された答えはうまく動作します。しかし、この答えは、より速く実行されます。

var randomProperty = function (obj) {
    var keys = Object.keys(obj);
    return obj[keys[ keys.length * Math.random() << 0]];
};