配列を処理する方法は他にもいくつかあります〜
方法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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません......
この記事では主に、MySQL サービスの自動停止の解決策を紹介し、参考と学習のために共有します。一緒...
バブリングとは何ですか? DOM イベント フローには、イベント キャプチャ ステージ、ターゲット ...
コアコード <!DOCTYPE html> <html lang="ja...
この記事では、サイコロゲームを実装するためのWeChatアプレットの具体的なコードを参考までに共有し...
序文最近、テスト環境で MySQL データベースが自動的に再起動し続ける問題が発生しました。原因は、...
目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...
目次1 マスター・スレーブの読み取り・書き込み分離1.1 コア2 マスタースレーブレプリケーション2...
「初心者向けソースコードからの MySQL デッドロック問題の理解」では、MySQL ソースコードを...
スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...
Nginx によるソケット ポート転送の一般的なシナリオ: オンライン学習アプリケーションでは、通常...
Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...
js興味深いカウントダウンケース、参考までに、具体的な内容は次のとおりですコード: <!DO...
1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...
kubectl の紹介kubectl は、k8s クラスターを操作するためのコマンドライン ツールで...