Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Returno Мудрец (12167), на голосовании 4 месяца назад
 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);
}
Дополнен 5 месяцев назад
почему этот массив работает не адекватно for (let s = 1; s < sVarOneTwo; s++) {
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (263840) 5 месяцев назад
так попробуй
 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);
}
Кинню Каору Мастер (1342) 5 месяцев назад
Проблема возникает из-за того, что вложенный цикл `for (let s = 1; s < sVarOneTwo; s++)` должен быть завершен при условии `j < sVarOneTwo`, но это условие не учтено. Как следствие, цикл повторяется 1000 раз, так как он итерируется от 1 до `sVarOneTwo`, а `sVarOneTwo` равно 1000.
Похожие вопросы