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('---');
}
新しい変数を導入する必要はありません。
関数Stringの結果に直接[0]を
適用することができます:
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]という構文が
2回繰り返されることになります。
これは、第一に長くなり、第二に、数字を文字列に
2回変換するため最適ではなく、プログラムリソースが
無駄に消費されます。
この問題を修正しましょう:
let num = 12345;
let first = String(num)[0];
if (first == 1 || first == 2) {
console.log('+++');
} else {
console.log('---');
}
整数が与えられます。 この数字の最後の桁がゼロに等しいかどうかを チェックする条件を書いてください。
変数numに数字が格納されているとします。
数字が偶数か奇数かを判定してください。
最後の桁が0、2、4、
6、または8であれば偶数であり、
そうでなければ奇数です。