使用javascript从关联数组中选择随机值?

G0b*_*ack 0 javascript arrays random

可能重复:
JavaScript:从数组中获取随机值
如何随机选择对象键?

假设我们有一个这样的数组:

var MrArray = new Array(5);
MrArray['one']='oneValue';
MrArray['two']='twoValue';
MrArray['three']='threeValue';
MrArray['four']='fourValue';
MrArray['five']='fiveValue';
Run Code Online (Sandbox Code Playgroud)

好?数组是关联的.我们有字符串键和字符串值.现在!我如何从中选择一个随机值? 编辑:我想这样使用:

<A href="Array value Here">Array Key Here</a>
Run Code Online (Sandbox Code Playgroud)

问候萨姆

Håv*_*ard 8

使用此处描述的方法,我们可以创建以下函数:

function randomKey(obj) {
    var ret;
    var c = 0;
    for (var key in obj)
        if (Math.random() < 1/++c)
           ret = key;
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

它返回一个随机密钥,因此要从中获取随机值MrArray,请执行以下操作:

var value = MrArray[randomKey(MrArray)];
Run Code Online (Sandbox Code Playgroud)

jsPerf基准比较了这个和其他答案的速度.