zoukankan      html  css  js  c++  java
  • js之数组乱序

    这是最近面试遇到的,不过忘记了,之前也有印象刷到过这道题,就再次记录一下加深印象吧,听到最多的答案是利用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>
    
  • 相关阅读:
    GPU编程和流式多处理器(七)
    GPU编程和流式多处理器(六)
    vue——使用vant轮播组件swipe + flex时,文字抖动问题
    golang 修改字符串
    Go 彻底弄懂return和defer的微妙关系
    Redis 的持久化机制
    Redis 缓存击穿
    Redis 缓存穿透
    Redis 雪崩
    正则验证
  • 原文地址:https://www.cnblogs.com/samsara-yx/p/13073357.html
Copyright © 2011-2022 走看看