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クエリ制御ステートメントの詳細なグラフィック説明
FFMPEG 3.4.1 バージョンパラメータの詳細使用方法: ffmpeg [オプション] [[入...
ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...
HTML でのテキストのデフォルトの配置は水平ですが、特殊な場合にはテキストを垂直に配置する必要が...
目次質問1: 小道具は具体的にどのように使用されますか?原理は何ですか?下を見る質問 2: 年齢に ...
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...
目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...
目次WiFiワイヤレステクノロジーの紹介1. WiFiテクノロジーの概要2. ESP8266の紹介W...
目次1. はじめに2. vue-simple-uploaderについて3. vue-simple-u...
目次プロジェクトでデータベースを操作する3つのステップデータベースを操作するための具体的な手順1: ...
ストレージエンジンデータベース ストレージ エンジンとは何ですか?データベース エンジンは、データベ...
LinuxリモートMySQLデータベースの展開、参考までに、具体的な内容は次のとおりです。 1.0 ...
2 年生から、これらのインストールと設定の仕方を尋ねられました。簡単なチュートリアルを作成し、ここ...
位置が絶対の場合、関連する属性のパーセンテージは、参照先の要素 (包含ブロック) を基準として計算さ...
目次スムーズなアニメーションの基準方法1: Chromeデベロッパーツールを使用する方法 2: フレ...
リンク上の点線のボックスを削除しますコードをコピーコードは次のとおりです。 a:アクティブ、a:フォ...