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 接続オブジェクトの原理分析と使用例

推薦する

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

js 属性オブジェクトの hasOwnProperty メソッドの使用

オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...

SQL Server での exists と except の使用法の概要

目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...

ページキャッシュを無効にするいくつかの方法を共有する

本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...

JavaScript タイマーの詳細

目次1. 簡単な紹介2. 間隔を設定する2.1 説明2.2 パラメータ2.3 戻り値2.4 使用法3...

Mysql ルートユーザーアカウントのパスワードをリセットする問題を解決する

問題の説明: mysqladmin.exe を使用してコマンドを実行すると、次のエラー メッセージが...

js を使用して 2 つの HTML ウィンドウ間で通信する方法

シナリオ: ページAがページBを開くと、ページBで操作した後、ページAは変更されたデータを同期する必...

JavaScriptを使用してページ効果を作成する

11. JavaScriptを使用してページ効果を作成する11.1 DOMプログラミングDOM プロ...

Hadoop におけるネームノードとセカンダリネームノードの動作メカニズムの説明

1) プロセス 2) FSImageと編集NodeNode は HDFS の頭脳です。ファイルシステ...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

MySQLリモートアクセスの設定方法をステップバイステップで説明します

序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...

Vueはコードのハイライトを実現するためにモナコを使用しています

Vue 言語と要素コンポーネントを使用して、コード コンテンツの入力を必要とし、ハイライト表示が可能...

JavaScript で charAt() を使用して、最も頻繁に出現する文字とその出現回数をカウントする方法を教えます。

前回は、JavaScript の charAt() メソッドの使い方を紹介しました。今日は、最も多く...

mysql 5.6.21 のインストールと設定の詳細な手順

1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...