vue 随机取一个数组中的4项数据不重复
时间: 2023-03-31 16:00:29 浏览: 254
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
可以使用 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 个不重复的元素
```
阅读全文