Kiểm tra các chữ số của số trong JavaScript
Giả sử chúng ta có một số:
let num = 12345;
Việc cố gắng truy cập ký tự đầu tiên của số sẽ dẫn đến hành vi không mong đợi:
let num = 12345;
if (num[0] == 1) {
console.log('+++');
} else {
console.log('---'); // cái này sẽ chạy
}
Như bạn đã biết, vấn đề ở chỗ có thể truy cập các ký tự của chuỗi, nhưng không thể - đối với các chữ số của số:
let num = 12345;
console.log(num[0]); // sẽ hiển thị undefined
Để giải quyết vấn đề, hãy chuyển đổi số của chúng ta thành chuỗi:
let num = 12345;
let str = String(num);
if (str[0] == 1) {
console.log('+++'); // cái này sẽ chạy
} else {
console.log('---');
}
Không nhất thiết phải tạo biến mới,
có thể áp dụng [0] trực tiếp
vào kết quả của hàm String:
let num = 12345;
if (String(num)[0] == 1) {
console.log('đúng'); // sẽ hiển thị 'đúng'
} else {
console.log('không đúng');
}
Bây giờ giả sử chúng ta muốn kiểm tra chữ số đầu tiên
xem nó có bằng 1, hoặc 2 không.
Hãy viết mã tương ứng:
let num = 12345;
if (String(num)[0] == 1 || String(num)[0] == 2) {
console.log('+++');
} else {
console.log('---');
}
Trong trường hợp này, cấu trúc
String(num)[0] lặp lại hai lần.
Điều này, thứ nhất, là dài dòng, và thứ hai, không tối ưu,
vì chúng ta chuyển đổi số thành chuỗi hai lần
- lần thứ hai là thừa, và tài nguyên
chương trình bị tiêu tốn vào việc đó.
Hãy sửa vấn đề:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
Cho một số nguyên. Hãy viết điều kiện kiểm tra xem chữ số cuối cùng của số đó có bằng không hay không.
Giả sử trong biến num lưu trữ một số.
Hãy xác định số đó là chẵn hay lẻ. Số sẽ
là chẵn nếu ký tự cuối cùng bằng 0,
2, 4, 6 hoặc 8,
và là lẻ trong trường hợp ngược lại.