从Javascript对象中选择随机属性

假设您有一个像{'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;

        }

    }       

}


慕妹3242003
浏览 731回答 3
3回答

qq_笑_17

选择的答案会很好。但是,此答案将运行得更快:var randomProperty = function (obj) {&nbsp; &nbsp; var keys = Object.keys(obj)&nbsp; &nbsp; return obj[keys[ keys.length * Math.random() << 0]];};

富国沪深

从流中选择随机元素function pickRandomProperty(obj) {&nbsp; &nbsp; var result;&nbsp; &nbsp; var count = 0;&nbsp; &nbsp; for (var prop in obj)&nbsp; &nbsp; &nbsp; &nbsp; if (Math.random() < 1/++count)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;result = prop;&nbsp; &nbsp; return result;}

收到一只叮咚

您可以在遍历对象时构建一系列键。var keys = [];for (var prop in obj) {&nbsp; &nbsp; if (obj.hasOwnProperty(prop)) {&nbsp; &nbsp; &nbsp; &nbsp; keys.push(prop);&nbsp; &nbsp; }}然后,从键中随机选择一个元素:return keys[keys.length * Math.random() << 0];
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript