js 从数组中随机抽取多个不同元素的方法

本文介绍了一种在JavaScript中从数组中随机抽取指定数量不同元素的有效方法。首先通过打乱数组顺序,然后截取所需数量的元素,确保了抽取过程的随机性和不重复性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js 从数组中随机抽取10个不同元素的方法

需求:从长度若干的数组中随机抽取10个不同、且不重复的元素。

一般思路:


	getRandomArr = (arr) =>{
		var newArr=[];
		for(var i=0;i<10;i++){
		    var idx=parseInt(Math.random()*arr.length)
		    newArr.push(arr[idx])
		    arr.splice(idx,1)    
		}
	}
	

经过使用,这个方法可能导致重复数据,数组越小几率越高。

改良版代码:


  //打乱数组顺序
  getArrRandomly = (arr) => {
    var len = arr.length;
    for (var i = len - 1; i >= 0; i--) {
      var randomIndex = Math.floor(Math.random() * (i + 1));
      var itemIndex = arr[randomIndex];
      arr[randomIndex] = arr[i];
      arr[i] = itemIndex;
    }
    return arr;
  }
  
  //截取打乱后的数组的前10(num)位
  getRandomArr = (arr=[],num=10) => {
    const tmpArr = this.getArrRandomly(arr);
    let arrList = [];
    for (let i = 0; i < num; i++) {
      arrList.push(tmpArr[i]);
    };
    console.log(arrList);
  }


代码思路:先打乱数组顺序,然后截取你想要的元素个数(num)

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值