前提・実現したいこと
ある数桁の数字を分割しそれぞれを足し合わせ合計を求めたいです。
例) 12345
1+2+3+4+5 = 15
この目的自体は実現できたのですが、数値を文字列に変換し分割する。そして、それぞれの要素を数値に戻す処理過程において、
あるウェブページを閲覧した際、見たことない書き方をしており何故こうなるのかが分かりません。
↓こちらが閲覧したウェブサイトになります。
https://www.it-swarm-ja.tech/ja/javascript/javascript%E7%95%AA%E5%8F%B7%E3%82%92%E5%80%8B%E3%80%85%E3%81%AE%E6%95%B0%E5%AD%97%E3%81%AB%E5%88%86%E5%89%B2/939928640/
具体的には、for文内output.push(+sNumber.charAt(i));
でsNumber
に+(プラス)を付与することにより
文字列から数字に変わる部分です。
出力結果:
+(プラス)を付与した場合: [1, 2, 3, 5, 4, 9, 8, 7];
+(プラス)を付与しない場合: ["1", "2", "3", "5", "4", "9", "8", "7"];
+(プラス)が付与される事により何がどうなっているのか全く見当もつかない状態です。
+(プラス)が付与されて文字列ではなく数字が出力さるる過程まで説明して頂けると嬉しいです。
該当のソースコード
JavaScript
1var number = 12354987, 2 output = [], 3 sNumber = number.toString(); 4 5for (var i = 0, len = sNumber.length; i < len; i += 1) { 6 output.Push(+sNumber.charAt(i)); 7} 8 9console.log(output); 10 11/* Outputs: 12 * 13 * [1, 2, 3, 5, 4, 9, 8, 7] 14 */
試したこと
for文の記述方により変わってくるのかと思い、私が普段記述している方法で書いてみたのですが問題なく結果が出力されました。
故に+(プラス)の有無によって結果が変わってくるということまで特定しました。
JavaScript
1var number = 12354987, 2 output = [], 3 sNumber = number.toString(); 4 5for (var i = 0, len = sNumber.length; i < len; i++) { 6 output.push(+sNumber[i]); 7} 8 9/* Outputs: 10 * 11 * [1, 2, 3, 5, 4, 9, 8, 7] 12 */ 13 14
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/05 09:03 編集
2021/01/05 09:04
2021/01/05 09:07 編集
2021/01/05 09:08
2021/01/05 09:09
2021/01/05 09:17