方式1: 使用sort 方法 ----

        // 方法1 使用sort 方法
var arr = [1,2,3,4,5,6,7,8];
function foo(arr) {
var cloneArr = arr.concat();
cloneArr.sort(function (n1,n2) {
return Math.random() - 0.5 ;
});
return cloneArr;
}
for (var i= 0 ; i < arr.length ; i++ ){
console.log(foo(arr));
}

方式2:使用递归

    <script>
var arr = [1,2,3,4,5,6,7,8]; function foo(arr) {
//使用concat 复制一个数组中
var cloneArr = arr.concat();
var result = [];
(function name(params) {
if (!cloneArr.length) return ;
var index = Math.floor(Math.random() * cloneArr.length);
result = result.concat(cloneArr.splice(index, 1));
arguments.callee();
})()
return result;
}
for (let i = 0; i < arr.length; i++) {
console.log(foo(arr))
}
</script>
</html>

方式3:使用迭代

       var arr = [1, 2, 3, 4, 5, 6, 7, 8];
function foo(arr) {
//使用concat 复制一个数组中
var cloneArr = arr.concat();
var result = []; var len = cloneArr.length; for(var i= 0 ;i< len ;i++){
var index = Math.floor(Math.random()* cloneArr.length);
result = result.concat(cloneArr.splice(index,1));
}
return result ;
}
for (let i = 0; i < arr.length; i++) {
console.log(foo(arr))
}

方法4: 洗牌方式

                   var arr = [1, 2, 3, 4, 5, 6, 7, 8];
function foo(arr) {
//使用concat 复制一个数组中
var cloneArr = arr.concat(); for (var i = 0; i < cloneArr.length; i++) {
var index = Math.floor(Math.random() * cloneArr.length);
var temp = cloneArr[index];
cloneArr[index] = cloneArr[i];
cloneArr[i] = temp;
}
return cloneArr;
}
for (let i = 0; i < arr.length; i++) {
console.log(foo(arr))
}

综合四种方法 -----认为用第四钟洗牌方式更佳!

最新文章

  1. 移动H5前端性能优化指南
  2. POJ3020 匹配
  3. json 数据 添加 删除 排序
  4. [USACO2002][poj1945]Power Hungry Cows(启发式搜索)
  5. js判断汉字字数
  6. 反射-b
  7. 自用类库整理之SqlHelper和MySqlHelper
  8. 【Loadrunner】初学Loadrunner——安装
  9. 探索ArrayList自动改变size真相
  10. Java开发知识之Java中的泛型
  11. 洛谷P3953 逛公园(NOIP2017)(最短/长路,拓扑排序,动态规划)
  12. Python数据清洗基本流程
  13. django实现类似触发器的效果
  14. 关于Mybatis的Example(and ,or )应用
  15. JAVA-JSP隐式对象
  16. 基于Extjs的web表单设计器
  17. 作业要求20181113-4 Beta阶段第1周/共2周 Scrum立会报告+燃尽图 03
  18. hdu6149 Valley Numer II 分组背包+状态压缩
  19. 通过Java Api与HBase交互
  20. Codeforces Round #329 (Div. 2)A 字符串处理

热门文章

  1. Linux时间同步问题
  2. 用servlet进行用户名和密码校验
  3. IBOS二次开发之视图创建(PHP技术)
  4. AngualrJS之自定义指令
  5. oracle中可能使用到的命令
  6. springboot+freemarker毕业设计项目错误合集
  7. [OC] UITableView 与 UItableViewCell 的使用
  8. C#语言struct结构体适用场景和注意事项
  9. 解决Idea无法提示代码、不检查语法的方法
  10. react 的进阶