gpt4 book ai didi

javascript - 随机非重复数组JS(不用.includes()求解)

转载 作者:行者123 更新时间:2023-11-29 10:04:00 27 4
gpt4 key购买 nike

我需要具有随机非重复值的数组。我发现用 includes() 解决问题,但我想在没有它的情况下进行。

代码

function rand(min, max){
return Math.round( Math.random() * (max - min) + min);
}

function getRandArray(n, min, max) {
//n - array length

var randArr = [];
randArr[0] = rand(min, max);

for (var i = 0; i < n; i++) {

var randNum = rand(min, max);
for (var j = 0; j < randArr.length; j++){
if (randNum != randArr[j])
randArr[i] = randNum;
else
randNum = rand(min, max);
}
}
return randArr;
}

最佳答案

您可以利用 ES6 Set 的力量很容易做到这一点。由于您正在寻找数组输出,您可以简单地使用 Array.from 并传入集合以从函数返回。这是它的样子:

function rand(min, max){
return Math.round( Math.random() * (max - min) + min);
}
function getRandArr(n, min, max) {
var set = new Set();
// ensure that the number of unique numbers they want is possible
var maxNumsInArr = Math.min(n, max-min+1);
while(set.size < maxNumsInArr) {
set.add(rand(min, max));
}
return Array.from(set);
}

console.log(getRandArr(10, 0, 10));
console.log(getRandArr(5, 100, 399));
console.log(getRandArr(5, 0, 2)); // only 3 possible unique values, so length will be 3

关于javascript - 随机非重复数组JS(不用.includes()求解),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com