我编写了一个函数,该函数生成具有10个随机生成的唯一值的数组。
我想扩展它,以便不包括某些值。
这是我的代码:
let excludedValues = [20,32,40,46,64,66,14,30,34];
let randomArray = [];
while(randomArray.length < 10){
let randomValue = Math.floor(Math.random() * 100) + 1;
let valueNotAllowed = excludedValues.includes(randomValue);
while (valueNotAllowed) {
randomValue = Math.floor(Math.random() * 100) + 1;
valueNotAllowed = excludedValues.includes(randomValue);
}
if(randomArray.indexOf(randomValue) === -1) randomArray.push(randomValue);
}
console.log(randomArray);
它创建一个长度为10的数组,其唯一值在1到100之间,但是ii仍包括
excludedValues
数组中的值我如何才能使这些值不出现在数组中而工作
提前致谢
最佳答案
作为已发布答案的替代方法,您可以使用Set
function getUniqueRandomValues(exclusion = []) {
// By definition, values inside of a Set are unique
const randomArray = new Set();
do {
const randomValue = Math.floor(Math.random() * 100) + 1;
// If the exclusion rule is satisfied push the new value in the random array
if (!exclusion.length || !exclusion.includes(randomValue)) {
randomArray.add(randomValue);
}
} while (randomArray.size < 10);
return Array.from(randomArray);
}
console.log(getUniqueRandomValues([20, 32, 40, 46, 64, 66, 14, 30, 34]));