Article Outline
「数値から各桁の値を取り出す処理」って言われたら数学的な処理が一番に思い浮かぶけど、JSならそんなことなかった。
TOC
Collection Outline
最新記事
- Next.js 北九州市のイベント情報を取得する
- Next.js × now がやばい
- 競プロ日記 ABC15
- 競プロ日記 ABC159
- Kaggle 住宅価格予測 単回帰分析してみる
- 単回帰分析のFlow
- React Native Styleをいい感じに
- React Movie Search を TS で.
- useRefの使い方がわからん
- Heroku PostgreSQL の使い方
- ラズパイとLEDマトリクスパネルで遊ぶ
- querySelectorAllで取得した要素は配列ではないらしい
- React HookでTodoアプリを作る
- Kaggle 住宅価格予測 重回帰分析してみる
- Kaggle 住宅価格予測 多項式回帰してみる
- Webフロントのすべて
- 新しいMacBook Airが届いた!
- 日向坂46のニュースをスクレイピング
- イコラブのニュースをスクレイピングする!
- 推しのブログをスクレイピング
数値から各桁の値を取り出す
仕様
入力: 数値 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の場合 体感 、数値 => 文字列 => 配列 の順で色々なメソッドが使える気がしますね。