Top.Mail.Ru
Ответы

Почему цикл не работает, массив заполняется 1000 раз?

123456789101112131415161718192021222324252627282930313233343536373839404142
 function numTransRavno(sVarOneTwo) { 
 
    ArrayTranslMax = []; 
    ArrayTranslMax.length = 0; 
    let ArrayRanMax = []; 
    let varOne, varTwo, numVar, stepmax, _varThree; 
 
    for (let i = minSing; i < maxSing + 1; i++) { 
 
        let singRan = ArraySing[i]; 
        varOne = varTwo = numVar = 0; 
        varSing = "";    
 
        for (let j = 1; j < sVarOneTwo; j++) { 
 
            varOne = j; 
 
            for (let s = 1; s < sVarOneTwo; s++) { 
 
                varTwo = s; 
                numVar = eval(varOne + singRan + varTwo); 
 
                if (Number.isInteger(numVar) && numVar > 0) { 
 
                    //if (numVar != sVarOneTwo) { 
 
                    ArrayRanMax[j] = varOne + "," + singRan + "," + varTwo + "," + "=" + "," + numVar; 
                    ArrayTranslMax.push(ArrayRanMax[j]); 
                       }            
 
                } 
 
            } 

 
        } 
 
    }//end for (let i=minSing; i < maxSing+1; i++) 
 
    console.log(ArrayTranslMax); 
} 
 
Дополнен

почему этот массив работает не адекватно for (let s = 1; s < sVarOneTwo; s++) {

По дате
По рейтингу
Аватар пользователя
Мастер

Проблема возникает из-за того, что вложенный цикл `for (let s = 1; s < sVarOneTwo; s++)` должен быть завершен при условии `j < sVarOneTwo`, но это условие не учтено. Как следствие, цикл повторяется 1000 раз, так как он итерируется от 1 до `sVarOneTwo`, а `sVarOneTwo` равно 1000.

Аватар пользователя
Искусственный Интеллект

так попробуй

12345678910111213141516171819202122232425
 function numTransRavno(sVarOneTwo) { 
    let ArrayTranslMax = []; 
    let varOne, varTwo, numVar; 
     
    for (let i = minSing; i < maxSing + 1; i++) { 
        let singRan = ArraySing[i]; 
        varOne = varTwo = numVar = 0; 
         
        for (let j = 1; j < sVarOneTwo; j++) { 
            varOne = j; 
             
            for (let s = 1; s < sVarOneTwo; s++) { 
                varTwo = s; 
                numVar = eval(varOne + singRan + varTwo); 
                 
                if (Number.isInteger(numVar) && numVar > 0) { 
                    ArrayTranslMax.push(varOne + "," + singRan + "," + varTwo + "," + "=" + "," + numVar); 
                } 
            } 
        } 
    } 
     
    console.log(ArrayTranslMax); 
}