რიცხვის ციფრების შემოწმება JavaScript-ში
დავუშვათ, გვაქვს რიცხვი:
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-ს,
და კენტი სხვა შემთხვევაში.