这是最近面试遇到的,不过忘记了,之前也有印象刷到过这道题,就再次记录一下加深印象吧,听到最多的答案是利用sort方法,不过也有说这种方法不好,利用了快排和插入排序,那就整理下吧

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="杨欣">
<title>js之数组乱序</title>
</head> <body> <script>
// 1.使用sort方法
let arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let arr2 = arr1.sort(() => Math.random() - 0.5)
console.log('1111111', arr2); // 2.把随机的放入新数组,最后合并在一起
let arr3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const shuffle1 = (arr) => {
let len = arr.length;
let newArr = [];
for (let i = 0; i < len; i++) {
let index = Math.floor(Math.random() * arr.length);
newArr.push(arr[index])
arr.splice(index, 1)
}
return [...newArr, ...arr]
}
console.log('2222222', shuffle1(arr3)); // 3.洗牌算法,取出最后一个和得到的随机交换位置
let arr4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const shuffle2 = (arr) => {
for (let i = arr.length; i; i--) {
let j = Math.floor(Math.random() * i)
[arr[i - 1], arr[j]] = [arr[j], arr[i - 1]]
}
return arr
}
console.log('3333333', shuffle1(arr4)); </script>
</body> </html>

最新文章

  1. 神经网络模型及R代码实现
  2. redis配置文件
  3. Silverlight中使用MVVM:DataGrid中触发Button的Click事件
  4. JAVA中单例模式的几种实现方式
  5. .net winform软件自动更新
  6. Linux静态库和共享库
  7. div中的img垂直居中
  8. eclipse指定启动时的jdk(xjl456852原创)
  9. java 8 中lambda表达式学习
  10. uitableView 选择跳过后, 跳回 颜色变化 问题
  11. .Net 分布式技术比较
  12. private static final 修饰符
  13. 012_TCP keepalive 和 http keep-alive
  14. mybatis返回结果封装为map的探索
  15. shell脚本登录远程服务器并下载至本地
  16. Linux df -h空间显示不正确
  17. nginx部署django应用
  18. B-树 B+树 B*树
  19. Django输入 中文参数保存异常解决方法
  20. 已安装 SQL Server 2005 Express 工具。若要继续,请删除 SQL Server 2005 Express 工具

热门文章

  1. 客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码
  2. 极客mysql13
  3. mysql建立索引,实际工作中建立索引的示例
  4. 最大子段和问题(C/C++)
  5. VM共享文件夹设置
  6. WIN10—更改电脑桌面路径
  7. Git本地仓库和远程仓库冲突解决
  8. scrapy学习之爬虫练习平台35
  9. 玩转百度地图API(地图,坐标,标记,添加控件,2D图,混合图,智能搜索,地址解析器,信息窗口)
  10. javascript实现文件上传之前的预览功能