js数组乱序输出 数组乱序排列

网上看的数组乱序输出,要么不合实际,要么代码繁琐。自己试了下,希望能给大家带来帮助。

重要思想也是Math.random*arr.length随机下标,然后删除取到的元素,继续随机下标。

//将数组乱序输出
        var arr = [1,2,3,4,5,6,7,8,9,10];
        var newArr = [];
            for(var i=0; i<arr.length; i++){
                 var index = Math.floor(Math.random()*arr.length);//随机下标
                     newArr.push(arr[index]);//将随机出的元素,存放新数组newArr中去
                     arr.splice(index,1);//    将随机出的元素在arr中删除            
            }
            //arr中删除随机出的元素,arr.length-1,同时i++,导致循环不会10次,会是5次.最后得到newArr中只有一半的随机数字,arr中剩下另一半. 将其合并到一起,得到res
            var res =[...newArr,...arr];
            console.log(res)

结果如下:

随后也有个问题,这个其实只随机了一半的数字,后一半没有随机,只是合并了上去。

改进后:

var arr = [1,2,3,4,5,6,7,8,9,10];
        var newArr = [];
        var len = arr.length;
            for(var i=0; i<len; i++){
                 var index = Math.floor(Math.random()*arr.length);//随机下标
                     newArr.push(arr[index]);//将随机出的元素,存放新数组newArr中去
                     arr.splice(index,1);//    将随机出的元素在arr中删除            
            }
            //arr中删除随机出的元素,arr.length-1,同时i++,导致循环不会10次,会是5次.最后得到newArr中只有一半的随机数字,arr中剩下另一半. 将其合并到一起,得到res
            var res =[...newArr,...arr];
            console.log(res) 

把len当成,作为循环条件,最后所有的都是随机的,结果如下:

 

转载于:https://www.cnblogs.com/Mir-bink/p/10604747.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值