Javascript поиск дубликатов, цикл
Подскажите пожалуйста , а как прогнать эту функцию несколько раз но с разными console.log , например сначала прошли по выборке :
a2, b2, c2, d2, e2
console.log("a2==b2");
console.log("b2==c2");
console.log("c2==d2");
console.log("d2==e2");
затем я хочу запустить такую же функцию но с другими входными через setTimeout 2 сек :
a1, b1, c1, d1, e1
console.log("a1==b1");
console.log("b1==c1");
console.log("c1==d1");
console.log("d1==e1");
и так 15 раз (комбинаций) одна за другой .Я наблюдаю что стек переполняется запросами не доходя до 15 комбинации зависает . Для примера я зациклил всю эту историю , после 3 комбинации начинать с 1 но при тесте видно - что становиться со временем тяжеловато)) Пробовал чистить set.clear(valid); не помогает .
a1 = 1;
a2 = 2;
a3 = 3;
b1 = 1;
b2 = 2;
b3 = 3;
c1 = 1;
c2 = 2;
c3 = 3;
d1 = 1;
d2 = 2;
d3 = 3;
e1 = 1;
e2 = 2;
e3 = 3;
wild = 10;
Combo1();
function Combo1(){
var firstNotWild = [a2, b2, c2, d2, e2].find(num => num !== wild);
var valid = new Set([wild, firstNotWild ?? wild]);
if(valid.has(a2) && valid.has(b2)) {
console.log("a2==b2");
setTimeout(Combo2, 2000);
if(valid.has(c2)) {
console.log("b2==c2");
setTimeout(Combo2, 2000);
if(valid.has(d2)) {
console.log("c2==d2");
setTimeout(Combo2, 2000);
if(valid.has(e2)) {
console.log("d2==e2");
console.log("All match.");
setTimeout(Combo2, 2000);
}
}
}
}
}
function Combo2(){
var firstNotWild = [a1, b1, c1, d1, e1].find(num => num !== wild);
var valid = new Set([wild, firstNotWild ?? wild]);
if(valid.has(a1) && valid.has(b1)) {
console.log("a1==b1");
setTimeout(Combo3, 2000);
if(valid.has(c1)) {
console.log("b1==c1");
setTimeout(Combo3, 2000);
if(valid.has(d1)) {
console.log("c1==d1");
setTimeout(Combo3, 2000);
if(valid.has(e1)) {
console.log("d1==e1");
console.log("All match.");
setTimeout(Combo3, 2000);
}
}
}
}
}
function Combo3(){
var firstNotWild = [a3, b3, c3, d3, e3].find(num => num !== wild);
var valid = new Set([wild, firstNotWild ?? wild]);
if(valid.has(a3) && valid.has(b3)) {
console.log("a3==b3");
setTimeout(Combo4, 2000);
if(valid.has(c3)) {
console.log("b3==c3");
setTimeout(Combo4, 2000);
if(valid.has(d3)) {
console.log("c3==d3");
setTimeout(Combo4, 2000);
if(valid.has(e3)) {
console.log("d3==e3");
console.log("All match.");
setTimeout(Combo4, 2000);
}
}
}
}
}
function Combo4(){
console.log("finish combos");
Combo1();
}