为了账号安全,请及时绑定邮箱和手机立即绑定

从Javascript对象中选择随机属性

从Javascript对象中选择随机属性

慕妹3242003 2019-12-20 10:52:20
假设您有一个像{'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;        }    }       }
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

选择的答案会很好。但是,此答案将运行得更快:


var randomProperty = function (obj) {

    var keys = Object.keys(obj)

    return obj[keys[ keys.length * Math.random() << 0]];

};


查看完整回答
反对 回复 2019-12-20
?
富国沪深

TA贡献1790条经验 获得超9个赞

从流中选择随机元素


function pickRandomProperty(obj) {

    var result;

    var count = 0;

    for (var prop in obj)

        if (Math.random() < 1/++count)

           result = prop;

    return result;

}


查看完整回答
反对 回复 2019-12-20
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您可以在遍历对象时构建一系列键。


var keys = [];

for (var prop in obj) {

    if (obj.hasOwnProperty(prop)) {

        keys.push(prop);

    }

}

然后,从键中随机选择一个元素:


return keys[keys.length * Math.random() << 0];


查看完整回答
反对 回复 2019-12-20
  • 3 回答
  • 0 关注
  • 730 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号