js 配列から重複を削除する 11 の方法

js 配列から重複を削除する 11 の方法

実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配列の重複排除のさまざまな方法です。

1.配列の各要素を他の要素と順番に比較し、重複する要素を見つけて削除する

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5];
    console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5]
    関数noRepeat1(arr) {
        for(var i = 0; i < arr.length-1; i++){
            for(var j = i+1; j < arr.length; j++){
                (arr[i]===arr[j])の場合{
                    arr.splice(j,1);
                    j--;
                }
            }
        }
        arr を返します。
    }
    var arr2 = noRepeat1(arr);
    console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8]

2. indexOf() メソッドを使用して、配列内でこの要素が最初に出現する位置の添え字がループの添え字と等しいかどうかを判断します。

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];
    console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5]
    関数noRepeat2(arr) {
        (var i = 0; i < arr.length; i++) の場合 {
            (arr.indexOf(arr[i]) != i) の場合 {
                arr.splice(i,1);//配列要素を削除した後、配列の長さが1減少し、次の要素が前方に移動します i--;//配列の添え字ロールバック}
        }
        arr を返します。
    }
    var newArr = noRepeat2(arr);
    console.log(newArr); //[1, 23, 3, 5, 6, 7, 9, 8]

3. 配列内でフィルターメソッドを使用する

var arr = ['リンゴ','バナナ','梨','リンゴ','オレンジ','オレンジ'];
console.log(arr) //["リンゴ", "バナナ", "梨", "リンゴ", "オレンジ", "オレンジ"]
var newArr = arr.filter(function(値,インデックス,self){
    self.indexOf(値) === インデックスを返します。
});
console.log(newArr); //["リンゴ", "バナナ", "ナシ", "オレンジ"]

4. 新しい配列を使用して、indexOf メソッドを通じて配列内の現在の要素のインデックスを決定します。ループの添え字と等しい場合は、それを新しい配列に追加します。

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];
    console.log(arr) //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5]
    関数noRepeat4(arr) {
        var ret = [];
        (var i = 0; i < arr.length; i++) の場合 {
            (arr.indexOf(arr[i]) == i)の場合{
                ret.push(arr[i]);
            }
        }
        ret を返します。
    }
    var arr2 = noRepeat4(arr);
    console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8]

5. 空のオブジェクトを使用して、新しい配列にすでに格納されている要素を記録します。

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];
    console.log(arr) //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
    var obj = {};
    var newArr = [];
    for(var i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]] = true;
            新しいArr.push(arr[i]);
        }
    }
    console.log(newArr); //[1, 23, 3, 5, 6, 7, 9, 8]

6. 新しい配列を使用して、新しい配列に要素が存在するかどうかを判断します。存在しない場合は、新しい配列に要素を追加します。

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];
    console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
    関数noRepeat6(arr){
        var newArr = [];
        for(var i = 0; i < arr.length; i++){
            (newArr.indexOf(arr[i]) == -1)の場合{
                新しいArr.push(arr[i]);
            }
        }
        newArr を返します。
    }
    var arr2 = noRepeat6(arr);
    console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8]

7. 新しい配列を使用して、要素が新しい配列に存在するかどうかを判断します。存在しない場合は、要素を新しい配列に追加します (元の配列の長さは変更されませんが、文字列順に並べ替えられます)

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];
    console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
    関数noRepeat7(arr) {
        var ret = [],
            end; // 繰り返し要素を比較するために使用される一時変数 arr.sort(); // 数値を再ソート end = arr[0];
        ret.push(arr[0]);
        (var i = 1; i < arr.length; i++) の場合 {
            if (arr[i] != end){//現在の要素が一時要素と等しくない場合は、この要素を新しい配列に追加します ret.push(arr[i]);
                終了 = arr[i];
            }
        }
        ret を返します。
    }
    var arr2 = noRepeat7(arr);
    console.log(arr2); //[1, 23, 3, 5, 6, 7, 8, 9]

8. この方法では、新しいアレイの助けを借りて元のアレイを直接変更するのではなく、重複排除後のアレイをソートします。

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];
    console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5]
    関数noRepeat8(arr) {
        var end; // 繰り返し要素を比較するために使用される一時変数 arr.sort(); // 数値を再ソート end = arr[0];
        (var i = 1; i < arr.length; i++) の場合 {
            if (arr[i] == end){//現在の要素が一時要素と等しい場合は、配列からこの要素を削除します。arr.splice(i,1);
                私 - ;
            }それ以外{
                終了 = arr[i];
            }
        }
        arr を返します。
    }
    var arr2 = noRepeat8(arr);
    console.log(arr2); //[1, 23, 3, 5, 6, 7, 8, 9]

9. 二重ループは元の配列を変更する

var arr = [1,1,2,2,3,3,4,4,5,5,4,3,1,2,6,6,6,6];
    console.log(arr); //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 1, 2, 6, 6, 6, 6]
    関数noRepeat9(arr){
        (var i = 0; i < arr.length; i++) の場合 {
            (var j = 0; j < arr.length; j++) の場合 {
                if (arr[i] == arr[j] && i != j){//繰り返しの数字を削除します arr.splice(j, 1);
                }
            }
        }
        arr を返します。
    }
    var arr2 = noRepeat9(arr);
    console.log(arr2); //[1, 2, 3, 4, 5, 6]

10. 新しい配列の助けを借りて

var arr = [1,1,2,2,3,3,4,4,5,5,4,3,2,1,1,1];
    console.log(arr); //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 2, 1, 1, 1]
    var newArr = [];
    (var i = 0; i < arr.length; i++) の場合 {
        var repArr = []; // 繰り返しデータの後の添え字を受け取る // 内部ループは繰り返しデータのある添え字を見つける for (var j = i + 1; j < arr.length; j++) {
            (arr[i] == arr[j])の場合{
                repArr.push(j);//次の繰り返しデータの添え字を見つけます}
        }
        // コンソールログ(repArr);
        if (repArr.length == 0){//繰り返し配列に値がない場合、繰り返しデータではないことを意味します newArr.push(arr[i]);
        }
    }
    console.log(newArr); //[5, 4, 3, 2, 1]

11. ES6が提供するSet構造の助けを借りて

var arr = [1,1,2,2,3,3,4,4,5,5,4,3,2,1,1,1];
    console.log(arr); //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 2, 1, 1, 1]
    関数noRepeat11(arr){
        var newArr = [];
        var myset = new Set(arr); //Set構造体が重複したデータを受け取れないという機能を使用する for(var val of myset){
            newArr.push(val)
        }
        newArr を返します。
    }
    var arr2 = noRepeat11(arr)
    console.log(arr2); //[1, 2, 3, 4, 5]

上記は、js 配列の重複排除の 11 の方法の詳細です。js 配列の重複排除の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • JS 配列の重複を排除する 9 つの高度な方法 (実証済みで効果的)
  • JS 配列のフラット化、重複排除、ソート操作の詳細な例
  • JS配列属性の重複排除と重複データの検証
  • 高性能 js 配列重複排除 (12 種類の方法、史上最も包括的)
  • JS配列におけるオブジェクト重複排除の例
  • js配列重複排除方法の概要
  • JS 配列の重複排除の 6 つの方法と完全な例
  • js 配列から重複を削除する N 個の方法 (要約)
  • JS配列の重複排除の一般的な方法の概要[4つの方法]
  • JS配列重複排除の詳細

<<:  MySQL のスローログオンラインの問題と最適化ソリューション

>>:  Linux redis-Sentinel 設定の詳細

推薦する

MySQL のキーとインデックスの違い

まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...

vue3+TypeScript+vue-routerの使い方

目次使いやすいプロジェクトを作成するvue-cli 作成ヴィートクリエイションvue-routerを...

MySQL でのデータベース間クエリの例

序文MySQL では、クロスデータベース クエリは主に 2 つの状況に分けられます。1 つは同じサー...

mysql8 共通テーブル式 CTE 使用例の分析

この記事では、例を使用して、MySQL 8 の共通テーブル式 (CTE) の使用方法を説明します。ご...

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

html+vue+element-ui のスムーズさを 1 分で体験

テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...

UCenter ホームサイトに統計コードを追加

UCenter Homeは、ComsenzがリリースしたSNSサイト構築システムです。最新バージョン...

仮想マシンのディスクサイズを拡張する方法

Vmvare が仮想マシンのディスク サイズを設定した後、ディスク領域が不足していることがわかりまし...

vscodeを使用してuniappを開発する方法

私はフロントエンド プロジェクトの開発に常に vscode を使用してきたため、現在ではいくつかの小...

VMware Workstation のインストール (Linux カーネル) Kylin グラフィック チュートリアル

この記事では、VMware WorkstationにKylinをインストールする方法を参考までに紹介...

Vue3ナビゲーションバーコンポーネントのカプセル化実装方法

参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

CSSはラジオをクリックして2つの画像スタイルを切り替えますが、複数のラジオのうち1つだけをチェックできます。

クリックされたボタンには赤い画像スタイルを実装し、選択されていない他のボタンには灰色の画像スタイルを...

html+cssレイアウトの3つの方法(ナチュラルレイアウト/フローレイアウト/ポジショニングレイアウト)

1. 自然なレイアウト<br />レイアウトは変更せずに自動的に左揃えになります。 2....

Alibaba Cloud ドメイン名と IP バインディングの手順と方法

1 Alibaba Cloud コンソールに入り、ドメイン名コンソールを見つけて、バインドするドメイ...