I am trying to create an array of unique numbers from 0 to 10:
var numbers=[];
var i=0;
var prevLength=numbers.length;
while(numbers.length<10){
prevLength=numbers.length;
if(numbers.length<=prevLength){
numbers[i]=Math.floor(Math.random()*10);
numbers=[...new Set(numbers)];
console.log(numbers);
i++;
}
}
But the output of the array will always have an undefined item at a random index which I don’t know why.
[ 9, 1, 8, 7, undefined, 5, 2, 0, 6, 3 ]
Can somebody help me out?
Advertisement
Answer
If the new Set removes a duplicate, then i will be larger than the length of numbers, due to numbers.length shrinking but i still getting increased. Don’t keep track of an index, just use .push to push to the end of the array:
var numbers=[];
var prevLength=numbers.length;
while(numbers.length<10){
numbers.push(Math.floor(Math.random()*10));
numbers=[...new Set(numbers)];
console.log(numbers);
}