随机但仅在 Chrome 中

2024-04-04

我有这个函数来创建随机的数字范围。

function randomRange(min, max) {
  return (new Array(++max-min))
  .join('.').split('.')
  .map(function(v,i){ return min+i; })
  .sort(function(){ return 0|Math.random()*max; });
}

它工作完美,但仅限于 Chrome。由于某种原因,所有其他浏览器的变化很小......

我在这里有一个简单的演示,以便您可以看到差异http://jsfiddle.net/elclanrs/zZRda/ http://jsfiddle.net/elclanrs/zZRda/.

正如您所看到的,Chrome 中的数字顺序大部分是随机的,但在其他浏览器中没有太大变化,只有少数数字改变了位置,但看起来几乎相同。

现在检查http://jsbin.com/iyalax/3/edit http://jsbin.com/iyalax/3/edit在 Chrome 和其他浏览器中,您会非常清楚地看到差异。

有什么想法为什么会发生这种情况吗?

Edit:我还有另一个randomRange在所有浏览器中都可以正常工作的函数,只是更长且更难看,请检查http://jsbin.com/iyalax/4/edit http://jsbin.com/iyalax/4/edit看看差异。


根据MDN https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort,

array.sort([比较函数])

如果compareFunction(a, b)返回0,则保持a和b不变 互相尊重,但要尊重所有不同的人 元素。注意:ECMAscript 标准不保证这一点 行为,因此并非所有浏览器(例如 Mozilla 版本约会 至少回到 2003 年)尊重这一点。

你可以试试

.sort(function(){ return Math.random()*2-1; })

您在这里要做的就是返回一个大于、小于或等于 0 的数字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机但仅在 Chrome 中 的相关文章

随机推荐