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クエリ制御ステートメントの詳細なグラフィック説明
目次序文事前準備ディレクトリを作成するcustom.cnf を作成する証明書を作成するpxc クラス...
目次1. イベントの委任イベントバブリングイベントキャプチャイベントの泡立ちの昇華考える2. 深いコ...
他のよりプロフェッショナルなブログ システムを参照すると、コード ブロックにコードのコピー ボタンが...
単方向リンク リストは、先頭から末尾、または末尾から先頭への方向のみを走査できます。そのため、単方向...
序文MySQL では、複数テーブル結合クエリは非常に一般的な要件です。複数テーブルクエリを使用する場...
JavaScriptの服装アルバム切り替え効果(Taobao商品画像切り替えに似ています)、参考ま...
Vue バス メカニズム (バス) vuex を使用するだけでなく、vue 内の親子以外のコンポーネ...
MySQL ショートリンクの設定方法1. mysql 接続番号ステートメントコマンドを確認します。 ...
この記事では、MySQL インストールの詳細なチュートリアルを記録し、全員と共有します。 1. バー...
この記事は参考までにmysql 8.0.19 winx64.zipのインストールチュートリアルを記録...
<本文> <div id="ルート"> <h1&...
<base target=_blank> は、基本リンクのターゲット フレームを新しいペ...
目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...
注: MySQL5.7 で root パスワードをクラックするには、パスワード認証をスキップしてデー...
この記事では、Vue.jsの具体的なコードを共有して、シンプルな折りたたみパネルを実装する例を紹介し...