要从数组中随机选择x条不重复的数据,你可以使用JavaScript中的`Array.prototype.filter`结合`Math.random`来实现,但这种方法在数据量大或x接近数组长度时效率不高。更有效的方法是使用`Set`来确保数据不重复,并利用`while`循环直到我们得到了x条不同的数据。以下是一个实现这一功能的简洁代码示例:
function getRandomUniqueItems(arr, x) {
let result = new Set();
while (result.size < x) {
let index = Math.floor(Math.random() * arr.length);
result.add(arr[index]);
}
return [...result];
}
// 示例用法
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const x = 5;
const randomItems = getRandomUniqueItems(array, x);
console.log(randomItems);
这段代码定义了一个`getRandomUniqueItems`函数,它接受一个数组`arr`和一个整数`x`作为参数。函数内部,我们使用了一个`Set`对象`result`来存储随机选取的元素,以确保元素的唯一性。然后,我们使用一个`while`循环来不断从原数组中随机选择一个元素并添加到`result`中,直到`result`的大小达到`x`。最后,我们将`Set`转换为数组并返回。这种方法在处理大数据集时效率较高,因为一旦`Set`的大小达到`x`,循环就会停止。