本文介绍JavaScript中数组随机重排(洗牌)的两种常见实现方式。第一种利用Array.prototype.sort结合Math.random进行排序,代码简洁但性能较差;第二种采用经典的Fisher-Yates洗牌算法,通过遍历交换元素实现高效重排。文章包含完整测试代码与性能对比结果,帮助开发者根据实际需求选择合适方案。
JavaScript数组随机重排方法介绍
本文介绍JavaScript中实现数组随机重排(洗牌)的具体方法,供开发者参考。
文中提供了两种不同的数组随机重排实现方案。
两种洗牌算法实现与性能测试
<script>
var count = 100000,arr = [];
for(var i=0;i<count;i++){
arr.push(i);
}
//常规方法,sort()
var t = new Date().getTime();
Array.prototype.sort.call(arr,function(a,b){ return Math.random()>.5 ? -1 : 1;});
document.write(arr+'<br/>');
var t1 = new Date().getTime();
document.write(t1-t);
//以下方法效率最高
if (!Array.prototype.shuffle) {
Array.prototype.shuffle = function() {
for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
return this;
};
}
var t = new Date().getTime();
arr.shuffle();
document.write('<br/>'+arr+'<br/>');
var t1 = new Date().getTime();
document.write(t1-t);
</script>
希望本文介绍的内容对JavaScript程序设计有所帮助。