Article Outline
数値から各桁の値を取り出す
仕様
入力: 数値 number
出力: 各桁の値の配列 number[]
数学的な処理
const classifyByDigits = (n: number): Array<number> => {
const values: Array<number> = [];
while (n) {
const value = n % 10;
values.push(value);
n = Math.floor(n / 10);
}
return values.reverse();
};
console.log(classifyByDigits(123)); // [1, 2, 3]
解説
入力を123とすると、
1回目
まず123を10で割った余りは、3
配列: [3]
123を10で割る(切り捨て)と、12
2回目
12を10で割った余りは、2
配列: [3, 2]
12を10で割る(切り捨て)と、1
3回目
1を10で割った余りは、1
配列: [3, 2, 1]
1を10で割る(切り捨て)と、0
おわり。
文字列として処理
普通は上の処理が一番に思い浮かぶと思うのですが、JS(TS)の場合は文字列として処理することでスッキリしたコードを書くことができます。
const classifyByDigits = (n: number): Array<number> =>
[...n.toString()].map((n) => Number(n));
解説
123を入力とすると、
文字列にする .toString
: '123'
スプレッド構文で配列として展開 [...string]
: ['1', '2', '3']
配列の中身を数値に変換 .map
: [1, 2, 3]
これだけで実現ができます。
考察
JSの場合 体感 、数値 => 文字列 => 配列 の順で色々なメソッドが使える気がしますね。