怎么在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闭包用多会造成内存泄露吗
javascript中文乱码如何解决
PHP学习第十五天——JavaScript入门DOM对象:二
Node.js基本内容和知识点
简单的说node.js就是运行在服务端的JavaScript,起初段定位是后端开发语言,由于技术的不够成熟,一般小型项目...
PHP与Node.js:一个史诗般开发者的分享
JavaScript 中 find() 和 filter() 方法的区别
JavaScript在ES6上有很多数组方法,每种方法都有独特的用途和好处。在开发应用程序时,大多使用数组方法来获...
js怎么跟php结合使用
简单说说Node.js和JavaScript
Node.js是一个开源和跨平台的JavaScript运行时环境,在浏览器之外运行V8JavaScript引擎(...
前端开发工程师专业技能简历范文
JavaScript怎么实现淘宝网图片的局部放大功能
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议