Немного простого вопроса, но я не могу понять это. Возможно, я должен использовать другой метод. Я хочу вернуть true только после того, как все интервалы цикла for будут запущены и пройдут условие. Однако, поскольку у меня написан мой код, возврат к true или false выполняется после начального значения цикла. Код проверяет, находится ли буква «z» в строке 3 или меньше индексов после буквы «a». Как я могу исправить/оптимизировать свой код?Для loop..if - Вернуть true только после прохождения всех интервалов
function nearbyAZ(str) {
var aIndex = [];
if (str.length == 1) {
return false;
}
for (var i = 0; i < str.length; i++){
if (str[i] == 'a') {
aIndex.push(i);
}
}
for (var j = 0; j < aIndex.length; j++) {
if (str.indexOf('z') <= aIndex[j] + 3 && str.indexOf('z') >= aIndex[j]) {
return true;
}
else {
return false;
}
}
}
console.log(nearbyAZ("abfz")) //true
console.log(nearbyAZ("abannz")) //should return true but false is returned before the second 'a' can be tested
console.log(nearbyAZ("a")) //false
console.log(nearbyAZ("z")) //false
console.log(nearbyAZ("za")) //false
Это отлично работает. Очень крутое решение –