原理:从就数组中随机选出一个数值组成新的数组、并且删除就数组中已经被取出来的值

    1. // 时间复杂度O(n2)
    2. function shuffle (arr) {
    3. let newArr = []
    4. while(arr.length) {
    5. let index = Math.floor(Math.random() * arr.length)
    6. let item = arr.splice(index, 1)
    7. newArr.push(item)
    8. }
    9. return newArr
    10. }
    11. // 时间复杂度O(n)
    12. function shuffle (arr) {
    13. let len = arr.length
    14. let index,temp
    15. while(len) {
    16. index = Math.floor(Math.random() * len)
    17. len --;
    18. temp = arr[len];// 拿到最后的元素
    19. arr[len] = arr[index]; // 将找到的元素和最后一个元素做替换
    20. arr[index] = temp;// 将最后的那个元素放在倒数第二
    21. // es6的方式互换
    22. // [arr[len], arr[index]] = [arr[index], arr[len]]
    23. }
    24. }
    25. // Array.sort()
    26. [0,4,5,6,3,2,9].sort(function () {
    27. return .5 - Math.random()
    28. })