最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何实现数组随机排序?

    正文概述 掘金(xiaomomo)   2020-12-15   698

    1. 利用sort方法

    例如为array数组排序可以使用如下方法,比较的原理为如果a-b > -1 ,则a排在b前面,否则a排在b后面

      let arr=[1,12,34,5,6];
      arr.sort((a,b)=>a-b);
      console.log('arr',arr);// 返回[1, 5, 6, 12, 34]
    

    所以,实现数组的随机排序,我们可以随机生成一个0-1之间的数跟0.5相比较,如果大于0.5则返回-1,否则返回1;

      let arr=[1,'12m',34,'we','5uw','w6'];
      const randomSort=()=>{
          return Math.random() > 0.5 ? -1 : 1;
      }
      arr.sort(()=>randomSort());
      console.log('arr',arr);
    

    2.创建一个新的数组,从原数组中随机抽取一个元素插入到新数组中,然后返回新数组

    let arr=[1,'12m',34,'we','5uw','w6'];
    const randomSort=(origin_array)=>{
      // 先拷贝一份到临时数组里
      let temp_array = origin_array.map(item=>item);
      let result_array=[];
      while(temp_array.length) {
         // 随机生成[0,temp_array.length)之间的整数
         let randomIndex = Math.floor(Math.random()*temp_array.length);
         console.log('randomIndex',randomIndex);
         result_array.push(temp_array[randomIndex]);
         temp_array.splice(randomIndex,1);
       }
       return result_array;
    }
    const result = randomSort(arr);
    console.log('result',result);
    

    3.数组内的元素随机替换位置(类似洗牌算法)

    let arr=[1,'12m',34,'we','5uw','w6'];
    const randomSort=(origin_array)=>{
        let len = origin_array.length;
        let temp='';
        let randomIndex=0;
    	for(let i=0;i<len;i++) {
        	//随机生成[i,len)的随机整数
            randomIndex = Math.floor(Math.random()*(len-i)+i);
            temp = origin_array[i];
            origin_array[i] = origin_array[randomIndex];
            origin_array[randomIndex] = temp;
        }
        return origin_array;
    }
    let result = randomSort(arr);
    console.log('result',result)
        
    

    起源地下载网 » 如何实现数组随机排序?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元