js在数组中随机取一个值而且不重复怎么写
时间: 2023-05-16 07:06:32 浏览: 206
可以使用Fisher-Yates算法来实现随机取一个数组中不重复的值。具体实现代码如下:
function getRandomArrayElement(arr) {
var currentIndex = arr.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = arr[currentIndex];
arr[currentIndex] = arr[randomIndex];
arr[randomIndex] = temporaryValue;
}
return arr[0];
}
这个函数会返回数组中随机的一个元素,而且不会重复。
相关问题
vue 随机取一个数组中的4项数据不重复
可以使用 Fisher-Yates 洗牌算法来实现随机取不重复的数组元素。具体步骤如下:
1. 首先,将数组中的元素按照顺序排列。
2. 然后,从数组的最后一个元素开始,向前遍历数组,对于每个元素,随机生成一个小于等于它的下标,将该元素与随机下标对应的元素交换位置。
3. 重复步骤 2 直到遍历到数组的第一个元素,此时数组中前面的 4 个元素就是随机取的不重复元素。
示例代码如下:
```javascript
function getRandomItems(arr, count) {
const result = [];
const len = arr.length;
for (let i = len - 1; i >= len - count; i--) {
const randomIndex = Math.floor(Math.random() * (i + 1));
[arr[i], arr[randomIndex]] = [arr[randomIndex], arr[i]];
result.push(arr[i]);
}
return result;
}
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = getRandomItems(arr, 4);
console.log(result); // [2, 5, 9, 6],随机取 4 个不重复的元素
```
js生成不重复随机数组生成
以下是一种生成不重复随机数组的方法:
```javascript
function generateRandomArray(length, min, max) {
var arr = [];
for (var i = min; i <= max; i++) {
arr.push(i);
}
var result = [];
for (var j = 0; j < length; j++) {
var index = Math.floor(Math.random() * arr.length);
result.push(arr[index]);
arr.splice(index, 1);
}
return result;
}
// 示例
var arr = generateRandomArray(5, 1, 10);
console.log(arr); // [10, 2, 6, 7, 1]
```
该方法首先生成一个包含所有可能值的数组,然后在每次循环中随机选择一个值,将其添加到结果数组中,并从可能值数组中删除该值,以确保不会重复。
阅读全文