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