我有一个数组,它可以有几十万行的最大长度。它看起来像这样:访问一个不完整数组的随机索引?
arr[12] = false
arr[334] = true
arr[753] = true
arr[1001] = false
arr[1222] = true
等等...
我想找到随机选择一排是真实的指数以最快的方式...
我的初步尝试是这样做的:
for(k in arr) {
if(arr[k]) {
candidate.push(k);
}
}
return Math.floor(Math.random() * candidate.length);
但它是相当缓慢的。
有没有更好的方法来做到这一点?
泰
'arr'确实是一个数组还是一个对象? 'for..in'比''正常''循环慢几倍。 – 2011-06-09 09:45:11
它是作为一个数组构建的,但不确定JavaScript是否会将它内部地转化为对象。# – mrwooster 2011-06-09 09:56:00
如果将它定义为数组,那么它将是一个数组;为什么数组不完整?也许使用其他数据结构可能会更好... – 2011-06-09 09:57:12