Во всем вашем коде нет ничего асинхронного, поэтому нет необходимости в async/await
. Кроме того, while
не является асинхронным.
Вы пропустили регистр для длины 1, поэтому второй элемент всегда может совпадать с первым.
class X {
getSeveralArrays() {
for (let index = 0; index < 50; index++) {
this.getValue();
}
}
getValue() {
this.i++;
this.array = [];
this.randomArray = [];
for (let index = 0; index < 4; index++) {
this.randomValue = this.getRandom();
if (this.array.length === 1) {
while (this.array[0] === this.randomValue) {
this.randomValue = this.getRandom();
}
this.array.push(this.randomValue);
} else if (this.array.length === 2) {
while (this.array[0] === this.randomValue || this.array[1] === this.randomValue) {
this.randomValue = this.getRandom();
}
this.array.push(this.randomValue);
} else if (this.array.length === 3) {
while (
this.array[0] === this.randomValue ||
this.array[1] === this.randomValue ||
this.array[2] === this.randomValue
) {
this.randomValue = this.getRandom();
}
this.array.push(this.randomValue);
} else {
this.array.push(this.randomValue);
}
console.log({ ...this.array });
this.randomArray.push({ ind: this.i, val: this.array });
}
}
getRandom() {
const value = Math.floor(Math.random() * 4);
return value;
}
}
console.log(new X().getSeveralArrays());
Также все эти проверки могут быть упрощены:
while (this.array.some(value => value === this.randomValue)) {
this.randomValue = this.getRandom();
}
И, как правило, в качестве небольшого обзора кода: если вам не нужен доступ к чему-либо из другого метода класса (или где-то за пределами), вы не должны помещать все эти значения в свойствах класса, но сохраните их как значения внутри ваших функций.
Так что this.randomValue
и this.array
должны быть просто определены в вашей функции с помощью let
или const
.