Пусть у нас дано число:
let num = 12345;
Попытка обратиться к первому символу числа приведет к неожиданному поведению:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // сработает это
}
Как вы уже должны знать, проблема в том, что можно обращаться к символам строки, но нельзя - к цифрам числа:
let num = 12345;
console.log(num[0]); // выведет undefined
Для решения проблемы преобразуем наше число в строку:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // сработает это
} else {
console.log('---');
}
Не обязательно вводить новую переменную,
можно применить [0]
непосредственно
к результату функции String
:
let num = 12345;
if (String(num)[0] == 1) {
console.log('верно'); // выведет 'верно'
} else {
console.log('неверно');
}
Пусть теперь мы хотим проверить первую цифру
на то, что она равна 1
, либо 2
.
Напишем соответствующий код:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
В данном случае получается, что конструкция
String(num)[0]
повторится два раза.
Это, во-первых, длинно, а во-вторых, не оптимально,
так как мы два раза преобразуем число в строку
- второй раз получается лишний, а ресурсы
программы на это тратятся.
Исправим проблему:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Дано целое число. Напишите условие, которое проверит, равна ли последняя цифра этого числа нулю.
Пусть в переменной num
хранится число.
Определите, четное число или нет. Число будет
четным, если последний символ равен 0
,
2
, 4
, 6
или 8
,
и нечетным в противном случае.