JavaScript实现shuffle数组洗牌操作示例


Posted in Javascript onJanuary 03, 2019

本文实例讲述了JavaScript实现shuffle数组洗牌操作。分享给大家供大家参考,具体如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript shuffle数组洗牌</title>
<body>
<script>
function createArray(max) {
  const arr = [];
  for(let i = 0; i < max; i++) {
    arr.push(i);
  }
  return arr;
}
function shuffleSort(arr) {
  arr.sort(()=> {
    //返回值大于0,表示需要交换;小于等于0表示不需要交换
    return Math.random() > .5 ? -1 : 1;
  });
  return arr;
}
function shuffleSwap(arr) {
  if(arr.length == 1) return arr;
  //正向思路
//  for(let i = 0, n = arr.length; i < arr.length - 1; i++, n--) {
//    let j = i + Math.floor(Math.random() * n);
  //逆向思路
  let i = arr.length;
  while(--i > 1) {
    //Math.floor 和 parseInt 和 >>>0 和 ~~ 效果一样都是取整
    let j = Math.floor(Math.random() * (i+1));
    /*
    //原始写法
    let tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    */
    //es6的写法
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }
  return arr;
}
function wrap(fn, max) {
  const startTime = new Date().getTime();
  const arr = createArray(max);
  const result = fn(arr);
  const endTime = new Date().getTime();
  const cost = endTime - startTime;
  console.log(arr);
  console.log("cost : " + cost);
}
wrap(shuffleSort, 1000);
wrap(shuffleSwap, 1000);//试验证明这种方法比第一种效率高多了
</script>
</body>
</html>

这里使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JavaScript实现shuffle数组洗牌操作示例

更多关于JavaScript相关内容还可查看本站专题:《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript排序算法总结》、《JavaScript查找算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
html下载本地
Jun 19 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
jQuery函数的等价原生函数代码示例
May 27 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
jQuery实现带动画效果的多级下拉菜单代码
Sep 08 Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
Jan 03 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
Vue代码分割懒加载的实现方法
Nov 23 Javascript
vue的keep-alive中使用EventBus的方法
Apr 23 Javascript
JavaScript实现数字前补“0”的五种方法示例
Jan 03 #Javascript
35个最好用的Vue开源库(史上最全)
Jan 03 #Javascript
原生js实现移动端Touch轮播图的方法步骤
Jan 03 #Javascript
发布一款npm包帮助理解npm的使用
Jan 03 #Javascript
用node开发并发布一个cli工具的方法步骤
Jan 03 #Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
Jan 03 #Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 #Javascript
You might like
DOM XPATH获取img src值的query
2013/09/23 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
JS高级笔记
2011/07/13 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
Python实现带百分比的进度条
2016/06/28 Python
Python时间获取及转换知识汇总
2017/01/11 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
《再别康桥》教学反思
2014/02/12 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
服务行业演讲稿
2014/09/02 职场文书
综合管理员岗位职责
2015/02/11 职场文书
物业保洁员管理制度
2015/08/05 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
八年级数学教学反思
2016/02/17 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python