JavaScript 配列重複排除ソリューション

JavaScript 配列重複排除ソリューション

配列を処理する方法は他にもいくつかあります〜
- includes : このメソッドは、配列に指定された値が含まれているかどうかを判断するために使用されます。状況に応じて、含まれている場合は true を返し、含まれていない場合は false を返します。
- find : 最初に見つかった項目を返します
- some : ブール値を返します。そのうちの1つがtrueの場合はtrueを返します。
- every : ブール値を返します。true を返すには、すべての項目が true である必要があります。
- filter : 新しいフィルタリングされた配列を返します。true が返された場合はそれが保持され、false はフィルタリングされます。
- reduce :収束

では本題に入りましょう~(参考になれば幸いです~私はちょっといたずらっ子です!!ハハハハハ)

方法1: set: データ型ではなくデータ構造であり、メンバーは一意である

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        s = new Set(ary); とします。
        // Array.from: 設定されたデータ構造を実際の配列に変換します。
        Array.from(s) を返す
    }
    ユニーク(arr);

方法2: オブジェクト属性名を繰り返すことはできない

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        obj = {} とします。
        for(let i=0;i<ary.length;i++){
            cur = ary[i]とします。
            (オブジェクト[cur])の場合{
                //ary.splice(i,1);// 配列を折りたたむ ary[i]=ary[ary.length-1];
                ary.length--; // 最後の項目を削除します i--;
                続く;
            }
            obj[cur]=cur; // objにキーと値のペアを追加します。属性名と属性値は同じです}
    }
    ユニーク(arr);

方法3: indexOf

arr = [12,1,12,3,1,88,66,9,66]とします。
 関数 unique(ary) {
        newAry = [] とします。
        for(let i=0;i<ary.length;i++){
            cur = ary[i]とします。
            (newAry.indexOf(cur)===-1)の場合{
                newAry.push(cur);
            }
        }
        newAry を返します。
    }
    ユニーク(編曲)

方法4: 並べ替え

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
       a = ary.sort(関数 (a,b) {
           ab を返します。
       });
       for(let i=0;i<a.length;i++){
           a[i]===a[i+1]の場合{
               i+1,1 をスプライスします。
               私 - ;
           }
       }
       を返します。
   }
   ユニーク(編曲)

方法 5: 含まれます: 含まれます。配列にその項目が含まれている場合は true を返します。含まれていない場合は false を返します。

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        newAry = [] とします。
        len = ary.length;とします。
        for(let i=0;i<len;i++){
            cur = ary[i]とします。
            もし(!newAry.includes(cur)){
                newAry.push(cur);
            }
        }
        newAry を返します。
    }
    console.log(ユニーク(arr));

メソッド 6: hasOwnProperty: プロパティ名がオブジェクトのプライベート プロパティであるかどうかを確認し、ブール値を返します。

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        obj = {} とします。
        ary.filter(function (item,index,a) を返す {
            // item: 配列の各メンバー // index: メンバーに対応するインデックス // a: 配列全体 // hasOwnProperty は、プロパティが出現したかどうかを確認するために使用されます。
           obj.hasOwnProperty(typeof item+item)?false を返します:obj[typeof item+item]=true;
           if (obj.hasOwnProperty(typeof item+item)){
               偽を返す
           }それ以外{
               obj[typeof item+item] = true;
               true を返します。
           }
        })
    }
    console.log(ユニーク(arr))

方法 7: フィルター + インデックス

arr = [12,1,12,3,1,88,66,9,66]とします。
    関数 unique(ary) {
        ary.filter(function (item,index,a) を返す {
            ary.indexOf(item)===index を返します。
        })
    }
    console.log(ユニーク(arr));

方法8: スプライス

arr = [12,1,12,3,1,88,66,9,66]とします。
 関数 unique(ary) {
        for(let i=0;i<ary.length;i++){
            (j=i+1;j<ary.length;j++){
                if(ary[i]===ary[j]){
                    ary.splice(j,1);
                    j--;
                }
            }
        }
        ary を返します。
    }
    ユニーク(arr);

方法9: 再帰

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        len = ary.length;とします。
        ary = ary.sort(関数 (a,b) {
            ab を返します。
        });
        関数 loop(インデックス) {
            if(インデックス>=1){
                if(ary[インデックス]===ary[インデックス-1]){
                    ary.splice(インデックス,1);
                }
                ループ(インデックス-1)
            }
        }
        ループ(長さ-1);
        ary を返します。
    }
    console.log(ユニーク(arr));

方法 10: マップ: マップ データ構造の値ストレージ機能を活用します。

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        newAry = [] とします。
        map = new Map();
        for(let i=0;i<ary.length;i++){
            もし(!map.has(ary[i])){
                map.set(ary[i],true);
                newAry.push(ary[i]);
            }
        }
    }
    ユニーク(arr);

方法11: 減らす

arr = [12,1,12,3,1,88,66,9,66]とします。
関数 unique(ary) {
        // Reduce: 最初のものは関数であり、2 番目のパラメーターは最初のコールバックの prev に渡されます。
        ary.reduce((prev,next)=>{ を返す
            //この関数の戻り値は次回の実行のための prev です。
            prev.includes(next)?prev:[...prev,next] を返します。
        },[])
    }
    console.log(ユニーク(arr));

方法 12: 方法 1 と同様に、rest 演算子を使用して...

arr = [12,1,12,3,1,88,66,9,66]とします。
    a = [...new Set(arr)] とします。
    コンソールにログ出力します。

JS 配列ソリューションに関するこの記事はこれで終わりです。より関連性の高い JS 配列重複排除コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript で重複配列を削除する 5 つの一般的な方法
  • JavaScript 配列の重複排除とフラット化関数の紹介
  • JS配列重複排除の詳細
  • JavaScript配列の重複排除のいくつかの方法についての詳細な説明
  • JavaScript配列重複排除の詳細な説明
  • JS で配列の重複排除を実装する 7 つの方法

<<:  MySQL 並列レプリケーションの簡単な分析

>>:  UDP 接続オブジェクトの原理分析と使用例

推薦する

Centos8 に nginx1.9.1 をインストールする詳細な手順

1.17.9 本当はもっと美味しいNginx のダウンロード アドレス: https://nginx...

nginx+php-fpm サービスの HTTP ステータス コード 502 の詳細な分析

弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...

Webpackプラグインを書いてnpmに公開するための80行のコード

1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...

Vue カプセル化コンポーネント アップロード画像コンポーネント

この記事の例では、参考のためにvueアップロード画像コンポーネントの具体的なコードを共有しています。...

Vue のスロットとフィルターの詳細な説明

目次スロットスロットとは何ですか?スロットの内容コンパイルスコープフォールバックコンテンツ名前付きス...

MySQL パーティション フィールド列に別のインデックスを作成する必要がありますか?

序文パーティション フィールドは主キーの一部でなければならないことは誰もが知っています。では、複合主...

Linux の特別な権限 SUID、SGID、SBIT の詳細な説明

序文Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っ...

バックエンド管理システムを構築するためのvue-element-adminの実装手順

最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

Zabbix Agent2を使用してOracleデータベースを監視する方法

概要zabbix バージョン 5.0 以降では、zabbix-agent2 という新しい機能が追加さ...

複数の HTML ページで HTML コードをまとめて呼び出す方法

方法 1: スクリプト方式を使用する:共通ヘッダー ファイル head.js または共通フッター フ...

MySQL で null を置き換える IFNULL() および COALESCE() 関数の詳細な説明

MySQLではisnull()関数をnull値の代わりとして使用することはできません。次のように:ま...

ドラッグアンドドロップによる並べ替えの詳細を実現する js

目次1. はじめに2. 実装3. HTML ドラッグ アンド ドロップ API を使用しないのはなぜ...

VMware vSAN 入門概要

1. 背景1. vSphere の共有ストレージの背景を簡単に紹介するvSphere の重要な機能は...

JavaScript 戦略パターンを使用してフォームを検証する方法

目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...