1 テストケース// テストケース const a = {}; 定数 b = { c: 1 }; 定数配列 = [ 1、1、「1」、「1」、 {}、{}、{c:1}、{c:1}、 あ、あ、b、b、 []、[]、[1]、[1]、 未定義、未定義、 ヌル、ヌル、 ナン、ナン、 ]; 2 JS配列重複排除4種類2.1 要素の比較この型は配列要素を比較して重複を削除します。 2.1.1 二重層 for ループ比較 (es5 でよく使用される)配列要素を1つずつ比較するには、2つのforループを使用し、重複する要素を削除するには // ダブルforループ関数uniq1(arr) { (i = 0 とします; i < arr.length; i++) { (j = i + 1 とします; j < arr.length; j++) { もし (arr[i] === arr[j]) { 配列jを1に連結する じーー } } } リターン } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null,NaN,NaN] 重複排除の前後の結果を比較すると、 2.1.2 隣接比較によるソート
関数 uni2(arr) { ソート (i = 0 とします; i < arr.length - 1; i++) { arr[i] === arr[i + 1] && arr.splice(i + 1, 1) && i--; } arr を返します。 } 新しい配列を作成し、繰り返しのない要素を新しい配列に入れることもできます。 関数uniq3(arr) { arr = arr.sort() 定数newArr = [arr[0]] (i = 1 とします; i < arr.length; i++) { もし (arr[i] !== arr[i - 1]) { 新しいArr.push(arr[i]) } } newArrを返す } // 重複排除結果 // [[],[],1,'1',[1],[1],NaN,NaN,{},{},{c:1},{c:1},{},{c:1},null,undefined]
2.2 要素の位置タイプを見つけるこのタイプは、要素の最初の出現を見つけることによって重複を削除します。 2.2.1 インデックス
関数 uniq4(arr) { res = [] とします (i = 0 とします; i < arr.length; i++) { (arr.indexOf(arr[i]) === i)の場合{ res.push(arr[i]) } } 戻り値 } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null] 同様に、 2.2.2 インデックスの検索
関数 uniq5(arr) { res = [] とします (i = 0 とします; i < arr.length; i++) { (arr.findIndex(item => item === arr[i]) === i) の場合 { res.push(arr[i]) } } 戻り値 } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null] 同様に、 2.3 要素の存在タイプこのタイプは、現在の要素が新しい配列内に存在するかどうかを判断して重複を削除します。 2.3.1には以下が含まれます
関数 uniq6(arr) { res = [] とします (i = 0 とします; i < arr.length; i++) { もし (!res.includes(arr[i])) { res.push(arr[i]) } } 戻り値 } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null,NaN]
2.3.2 いくつか
関数 uniq7(arr) { res = [] とします (i = 0 とします; i < arr.length; i++) { if (!res.some(item => item === arr[i])) { res.push(arr[i]) } } 戻り値 } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null,NaN,NaN] ここでも、要素を比較するために 2.4 データ構造の特性に依存するこの型は、ES6が提供するデータ構造 2.4.1 マップ
関数 uniq8(arr) { 定数マップ = 新しいマップ() (i = 0 とします; i < arr.length; i++) { !map.has(arr[i]) && map.set(arr[i], true) } [...map.keys()] を返す } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null,NaN]
2.4.2 セット(ES6が最もよく使用される) 関数 uniq9(arr) { [...新しいSet(arr)]を返す } // 重複排除結果 // [1,'1',{},{},{c:1},{c:1},{},{c:1},[],[],[1],[1],undefined,null,NaN] 3 補足上記のメソッドは、さまざまな たとえば、 つまり、方法はいろいろありますが、どれも同じです。 実際のアプリケーションでは、最も一般的な方法はSetを使用することですが、サードパーティのライブラリ JS配列重複排除の詳細に関するこの記事はこれで終わりです。より関連性の高いJS配列重複排除コンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。皆様の今後の123WORDPRESS.COMへのご支援をお待ちしております。 以下もご興味があるかもしれません:
|
<<: Java は Apache.POI を使用して HSSFWorkbook を Excel にエクスポートします
>>: MySQLクエリ制御ステートメントの詳細なグラフィック説明
Springboot プロジェクトを開始するには、次の 3 つの方法があります。 1. メインメソッ...
この記事では、CSS を使用して半透明の背景と不透明なテキストの効果を実現する方法の例を紹介します。...
環境: CentOS 7.1.1503 最小インストール依存パッケージをダウンロードします: yum...
この記事では、Web ページのリンクを美しくするためによく使用される書き換えルールをいくつか紹介しま...
npmアンインストール sudo npm アンインストール npm -g この文に遭遇して npm ...
最初の方法Alibaba Cloud および Baidu Cloud サーバーが利用可能です。 ! ...
序文JavaScript は習得が最も簡単な言語の 1 つであるため、成長と繁栄を続けており、市場に...
新しいウィンドウが開きます。 利点: ユーザーがリンクをクリックしても、現在閲覧しているコンテンツは...
・【シーン説明】 HTTP1.1 以降、HTTP プロトコルは永続的な接続 (長い接続とも呼ばれます...
最近、個人のウェブサイトを書き直しました。Alibaba Cloudで新しいサーバーを購入しました。...
目次1. 基本的な使い方2. 指示の動作原理2.1. 初期化2.2 テンプレートのコンパイル2.3....
1. データのバックアップ1. mysqldumpコマンドを使用してバックアップするmysqldum...
なぜ権限管理が必要なのでしょうか? 1. コンピュータ リソースは限られているため、コンピュータ リ...
最近、WeChatはAppleによってダークモードの開発を強制されました。ますます多くのウェブサイト...
目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...