配列を処理する方法は他にもいくつかあります〜
方法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: indexOfarr = [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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...
オブジェクトの hasOwnProperty() メソッドは、オブジェクトに特定の独自の (継承され...
目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...
本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...
目次1. 簡単な紹介2. 間隔を設定する2.1 説明2.2 パラメータ2.3 戻り値2.4 使用法3...
問題の説明: mysqladmin.exe を使用してコマンドを実行すると、次のエラー メッセージが...
シナリオ: ページAがページBを開くと、ページBで操作した後、ページAは変更されたデータを同期する必...
1. Apacheをインストールする $ sudo apt update && su...
11. JavaScriptを使用してページ効果を作成する11.1 DOMプログラミングDOM プロ...
1) プロセス 2) FSImageと編集NodeNode は HDFS の頭脳です。ファイルシステ...
目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...
序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...
Vue 言語と要素コンポーネントを使用して、コード コンテンツの入力を必要とし、ハイライト表示が可能...
前回は、JavaScript の charAt() メソッドの使い方を紹介しました。今日は、最も多く...
1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...