在Javascript中给出类似字典的对象,例如{a:1, b:-2, c:42}
,是否有一种随机选择属性的简单方法?
在上面的示例中,我希望有一个函数可以随机返回a
,b
或c
。
我提出的解决方案如下:
var proplist = []
forEach(property in foo) {
if(propertyIsEnumerable(foo[property]) {
proplist.push(property);
}
}
var n = proplist.length;
// randomly choose property (randInt(n) returns a random integer in [0,n))
proplist[randInt(n)];
是否有更惯用的方式来做到这一点?
答案 0 :(得分:7)
使用Object.keys
(甚至Object.getOwnPropertyNames
)获取所有属性的列表。然后,通过将Math.random()
与列表的长度相乘,选择一个随机属性。
var propList = {}; //...
var tmpList = Object.keys(propList);
var randomPropertyName = tmpList[ Math.floor(Math.random()*tmpList.length) ];
var propertyValue = propList[randomPropertyName];
答案 1 :(得分:5)