学无先后,达者为师

网站首页 前端文档 正文

JavaScript 随机从数组取一项 永不重复

作者:张建宇. 更新时间: 2022-01-11 前端文档

假设有这么一个数组

var data = [1, 2, 3, 4, 5, 6, 7, 8];

数组内有几个 就抽取几次 并且每次抽取的不能重复

首先我们要知道 随机数我们是控制不了的 所以 我们只能通过控制数组来实现

先写一个方法

function getExtract(array) {
	const random = (min, max) => Math.floor(Math.random() * (max - min) + min); //随机数方法
}

我们可以生成一个最小为0 最大为数组Length的随机数

function getExtract(array) {
    const random = (min, max) => Math.floor(Math.random() * (max - min) + min); //随机数方法
	let index=random(0, array.length); //生成一个从最小值为0 最大值为数组长度的随机数
}

这个时候就一目了然了 我们只需要从数组中删除当前随机到的数值 就ok了

因为删除了这一项 数组中没有了这一项 并且数组的Length发生变化

所以不可能取重复 

function getExtract(array) {
	const random = (min, max) => Math.floor(Math.random() * (max - min) + min); //随机数方法
	let index=random(0, array.length); //生成一个从最小值为0 最大值为数组长度的随机数
	return array.splice(index, 1);
}

调用方法:

getExtract(data)

 完整代码:

var data = [1, 2, 3, 4, 5, 6, 7, 8];

function getExtract(array) {
	const random = (min, max) => Math.floor(Math.random() * (max - min) + min); //随机数方法
	let index=random(0, array.length); //生成一个从最小值为0 最大值为数组长度的随机数
	return array.splice(index, 1);
}

getExtract(data)

原文链接:https://blog.csdn.net/m0_52035863/article/details/122112251

栏目分类
最近更新