怎么在JavaScript中实现一个shuffle数组

怎么在JavaScript中实现一个shuffle数组?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

具体如下:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>JavaScriptshuffle数组洗牌</title>
<body>
<script>
functioncreateArray(max){
constarr=[];
for(leti=0;i<max;i++){
arr.push(i);
}
returnarr;
}
functionshuffleSort(arr){
arr.sort(()=>{
//返回值大于0,表示需要交换;小于等于0表示不需要交换
returnMath.random()>.5?-1:1;
});
returnarr;
}
functionshuffleSwap(arr){
if(arr.length==1)returnarr;
//正向思路
//for(leti=0,n=arr.length;i<arr.length-1;i++,n--){
//letj=i+Math.floor(Math.random()*n);
//逆向思路
leti=arr.length;
while(--i>1){
//Math.floor和parseInt和>>>0和~~效果一样都是取整
letj=Math.floor(Math.random()*(i+1));
/*
//原始写法
lettmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
*/
//es6的写法
[arr[i],arr[j]]=[arr[j],arr[i]];
}
returnarr;
}
functionwrap(fn,max){
conststartTime=newDate().getTime();
constarr=createArray(max);
constresult=fn(arr);
constendTime=newDate().getTime();
constcost=endTime-startTime;
console.log(arr);
console.log("cost:"+cost);
}
wrap(shuffleSort,1000);
wrap(shuffleSwap,1000);//试验证明这种方法比第一种效率高多了
</script>
</body>
</html>

运行结果:

怎么在JavaScript中实现一个shuffle数组

关于怎么在JavaScript中实现一个shuffle数组问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注恰卡编程网行业资讯频道了解更多相关知识。

发布于 2021-04-08 13:37:04
收藏
分享
海报
0 条评论
172
上一篇:怎么在Python3中使用SSH远程连接服务器 下一篇:使用node.js如何连接mysql
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码