配列を処理する方法は他にもいくつかあります〜
方法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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
1.17.9 本当はもっと美味しいNginx のダウンロード アドレス: https://nginx...
弊社の Web プロジェクトの 1 つでは、新しい都市の増加によりトラフィックと DB 負荷が増加し...
1. はじめに最近、 Webpackの原理を勉強しています。これまでは Webpack の設定方法し...
この記事の例では、参考のためにvueアップロード画像コンポーネントの具体的なコードを共有しています。...
目次スロットスロットとは何ですか?スロットの内容コンパイルスコープフォールバックコンテンツ名前付きス...
序文パーティション フィールドは主キーの一部でなければならないことは誰もが知っています。では、複合主...
序文Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っ...
最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...
1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...
概要zabbix バージョン 5.0 以降では、zabbix-agent2 という新しい機能が追加さ...
方法 1: スクリプト方式を使用する:共通ヘッダー ファイル head.js または共通フッター フ...
MySQLではisnull()関数をnull値の代わりとして使用することはできません。次のように:ま...
目次1. はじめに2. 実装3. HTML ドラッグ アンド ドロップ API を使用しないのはなぜ...
1. 背景1. vSphere の共有ストレージの背景を簡単に紹介するvSphere の重要な機能は...
目次概要戦略パターンを使用しないフォーム検証戦略パターンを使用して最適化する戦略パターンの利点要約す...