[解決済み] Javascriptで数値から先頭のゼロを削除する [重複]。
質問
重複の可能性があります。
Javascriptで文字列の先頭の0を切り捨てる
Javascriptで数値から先頭のゼロを除去する最も簡単でクロスブラウザ互換性のある方法は何ですか?
例:テキストボックスの値を014または065とした場合、14または65のみを返すようにする。
解決方法は?
この変換には、次の4つの方法を使用することができます。
-
parseInt
と
基数
10
- 番号のコンストラクタ
- 単項プラス演算子
- 数学関数の利用(引き算)
const numString = "065";
//parseInt with radix=10
let number = parseInt(numString, 10);
console.log(number);
// Number constructor
number = Number(numString);
console.log(number);
// unary plus operator
number = +numString;
console.log(number);
// conversion using mathematical function (subtraction)
number = numString - 0;
console.log(number);
更新情報(コメントを受け付けています) なぜ、quot;large numbers"ではうまくいかないのでしょうか?
プリミティブ型の場合
Number
の場合、最も安全な最大値は
2
53-1
(
Number.MAX_SAFE_INTEGER
).
console.log(Number.MAX_SAFE_INTEGER);
次に、数値の文字列を考えてみましょう。 '099999999999999999999' を、上記の方法で変換してみます。
const numString = '099999999999999999999';
let parsedNumber = parseInt(numString, 10);
console.log(`parseInt(radix=10) result: ${parsedNumber}`);
parsedNumber = Number(numString);
console.log(`Number conversion result: ${parsedNumber}`);
parsedNumber = +numString;
console.log(`Appending Unary plus operator result: ${parsedNumber}`);
parsedNumber = numString - 0;
console.log(`Subtracting zero conversion result: ${parsedNumber}`);
すべての結果が不正確になります。
それは、変換されたときに、numStringの値が
Number.MAX_SAFE_INTEGER
.すなわち
99999999999999999999 > 9007199254740991
という前提で行われるすべての操作を意味します。
string
に変換することができます。
number
のタイプは失敗します。
よりも大きい数値の場合
2
53
, プリミティブ
BigInt
が追加されました。ブラウザの互換性を確認する
BigInt
こちら
.
変換コードはこのようになります。
const numString = '099999999999999999999';
const number = BigInt(numString);
追伸:なぜradixが重要なのかというと
parseInt
?
radix が undefined または 0 の場合(あるいは存在しない場合)、JavaScript は以下のように仮定する。
- 入力文字列が "0x" または "0X" で始まる場合、基数は16(16進数)であり、残りの文字列が解析されます。
- 入力文字列が "0" で始まる場合、基数は8(8進数)または10(10進数)になります。
- 入力文字列がその他の値で始まる場合、基数は10(10進数)になります。
どの基数を選択するかは、実装に依存する。ECMAScript 5 では 10 (10進数) が使われることが指定されていますが、すべてのブラウザがまだこれをサポートしているわけではありません。
このため parseInt を使用するときは、常に基数を指定します。
関連
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
要素ツリー制御によるvueTreeテーブル
-
Vueの要素ツリーコントロールに破線を追加する説明
-
JavaScriptのクロージャの説明
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
jq は html ページとデータを動的に分割する。