Чтобы ответить на ваш вопрос: причина, по которой ваша функция не возвращает желаемый результат, состоит в том, что она возвращает только последнее значение tof
.Таким образом, ваша функция в настоящее время только сообщает, аккуратны ли последние две цифры номера.Чтобы использовать пример @Seblor, 1324
:
- Сначала код проверяет, является ли
1 < 3
и установлен ли tof = true
. - Далее он проверит, является ли
3 < 2
и установить tof = false
. - Далее, он проверит, будет ли
2 < 4
и установить tof = true
.Это стирает фактический результат, который вы искали. - Кстати, код, наконец, проверит, действительно ли
4 < undefined
(как упомянуто @Pointy), но не изменит значение tof
, поскольку ни одно условное выражение не было удовлетворено.
Вы можете достичь желаемого поведения, возвращая результат false
немедленно, когда tof = false
(как предложено @ nina-scholz).Вот как это может выглядеть в вашем коде:
function tidyNumber(n){
var arr = n.toString(10).split("").map(function(t){return parseInt(t)});
let tof;
if(arr.length == 1){
return true;
}
for(i = 0; i < arr.length; i++){
if(arr[i] <= arr[i+1]){
tof = true;
} else if(arr[i] > arr[i+1]){
tof = false;
return tof; // <-- Added return statement here
}
}
return tof;
}
Надеюсь, это поможет!