JavaScript の parseInt() の魔法についての簡単な説明

JavaScript の parseInt() の魔法についての簡単な説明

原因

このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(atoi)に変換する問題です。興味がある方はタイトルをクリックして詳しい説明をご覧ください。何度もデバッグしてようやく正常に送信できたので、コメント欄で専門家の解決策を見ました。読んでみて、JavaScript の parseInt() がこんなに優れているとは、とため息をつくしかありませんでした。これは真実を物語っています。私たちが非常によく知っていると思っている API も、実際には私たちが完全に使いこなしているわけではない可能性があるのです。 ”

私の答え

/**
 * @param {文字列} 文字列
 * @return {数値}
 */
var myAtoi = 関数(str) {
    str = str.trim();
    //文字列の最初の文字をインターセプトします var firstChar = str.charAt(),res = '',regSymbol = /^[\-\+]{1}/,regNumber = /^[0-9]{1}/;

    if(!regSymbol.test(firstChar) && !regNumber.test(firstChar)){
        0を返します。
    }

    //最初の文字は + または - です
    if(regSymbol.test(firstChar)){
        var sliceStr = str.slice(1,str.length);
        for(var i=0;i<sliceStr.length;i++){
            if (regNumber.test(sliceStr.charAt(i))) {
                res += sliceStr.charAt(i);
            }それ以外{
                壊す;
            }
        }
        
        (res.length) ? res = parseInt(firstChar + res) : res = 0;

        if(firstChar == '-' && res < Math.pow(-2,31)){
            引数は Math.pow (-2,31) です。
        }

        if(firstChar == '+' && res > Math.pow(2,31) - 1){
            2,31 の整数乗は 1 です。
        }

        res を返します。
    }

    //最初の文字は数字です if (regNumber.test(firstChar)) {
        var スライスStr = str;
        for(var i=0;i<sliceStr.length;i++){
            if (regNumber.test(sliceStr.charAt(i))) {
                res += sliceStr.charAt(i);
            }それ以外{
                壊す;
            }
        }

        (parseInt(res) > Math.pow(2,31) - 1)の場合{
            2,31 の整数乗は 1 です。
        }

        res を返します。
    }
};

上司からの答え

/**
 * @param {文字列} 文字列
 * @return {数値}
 */
var myAtoi = 関数(str) {
    定数数値 = parseInt(str, 10);

    if(isNaN(数値)) {
        0を返します。
    } そうでなければ、(数値 < Math.pow(-2, 31) || 数値 > Math.pow(2, 31) - 1) {
        Math.pow(-2, 31) ? Math.pow(-2, 31) : Math.pow(2, 31) - 1 未満の数値を返します。
    } それ以外 {
        戻り番号;
    }
};

比較すると、JavaScript の parseInt() は、空の文字列をインターセプトし、最初の文字を判断し、数値型の結果を返すなどの一連の操作を実行していることがわかります。ちょうど今日の毎日の質問にぴったりです。parseInt() を使用してこの問題を解決するのはとてもクールです。

JavaScript の parseInt() の素晴らしい使い方についての記事はこれで終わりです。JavaScript parseInt() に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。皆様が今後も 123WORDPRESS.COM を応援してくれることを願っています。

以下もご興味があるかもしれません:
  • js の parseInt() の奇妙な動作の調査と修正
  • JS 変換関数 Number()、parseInt()、parseFloat() の詳細な説明
  • JS の Number()、parseInt()、parseFloat() の詳細な理解
  • js の Number()、parseInt()、parseFloat() の違いの詳細な説明
  • JS における parseInt() と map() の使用法の分析
  • JavaScript の parseInt() 関数の定義と使用法の分析
  • Javascript関数parseInt()は変換時にバグが発生する
  • JavaScript のグローバル オブジェクトの parseInt() メソッドの使用方法の紹介
  • JavaScript parseInt() 関数の基数変換の注意点の詳細

<<:  冗長カーネルを削除するLinuxディープインの実装方法

>>:  MySQL でコミットされていないトランザクション情報を見つける方法

推薦する

Linux でローカル コンピューターとリモート サーバーのポートが接続されているかどうかを確認する方法

以下のように表示されます。 1. ssh -v -p [ポート番号] [ユーザー名]@[IPアドレス...

CSS3 を使用して楕円軌道の回転を実装するサンプルコード

最近、次のような効果を達成する必要がある最初は、CSS3D回転を使用して記述すると、次の効果しか得ら...

ウェブページのCSSの優先順位について詳しく説明します

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

MySQL 8.0.17 のインストールと使用方法のチュートリアル図

前面に書かれた過去および現在のプロジェクトで最も一般的に使用されているリレーショナル データベースは...

Javascript の奇妙な点をご存知ですか?

私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...

Vue3の一般的なAPIの使用方法の紹介

目次ライフサイクルの変化反応的な参照vue2.x では ref を使用して要素タグを取得します。vu...

Vueは画像のドラッグと並べ替えを実装します

この記事の例では、画像のドラッグと並べ替えを実装するためのVueの具体的なコードを参考までに共有して...

Webpack4プラグインの実装原理についての簡単な説明

目次序文知る練習すれば完璧になる序文wabpack では、ローダーの他にプラグインがコア機能です。プ...

魔法のMySQLデッドロックトラブルシューティング記録

背景MySQL のデッドロックについて言えば、私は以前 MySQL のロックに関する基本的な紹介記事...

ウェブページの再設計の7つの主要要素 ウェブページの再設計の7つの主要要素を共有する

Shopify Plus は、私たちが設立した e コマース プラットフォームのエンタープライズ バ...

MySQL のスケジュールされた完全なデータベースバックアップ

目次1. MySQLデータのバックアップ1.1、データをバックアップするためのmysqldumpコマ...

HTML 要素に注釈を付けるときにクラスと ID のどちらが優れているかを分析する

Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...

CSS スタッキングと Z インデックスのサンプルコード

カスケードとカスケードレベルHTML 要素は 3 次元の概念です。水平方向と垂直方向に加えて、「Z ...

JSはreduce()メソッドを使用してツリー構造データを処理します

目次意味文法例1. 初期値initが渡されない2. 初期値を渡す場合3. アレイの重複排除4. Re...

CentOS 6.8 での Hadoop 3.1.1 完全分散インストール ガイド (推奨)

上記:このドキュメントは、3 台の仮想マシンが相互に ping を実行できること、ファイアウォールが...