アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求められます。アレイの重複を排除する方法は何ですか? 10 個の質問に答えることができれば、面接官はあなたに好印象を持つでしょう。 1. オブジェクトプロパティの使用 オブジェクトの一意の属性名機能を使用します。 var arr = ['qiang','ming','tao','li','liang','you','qiang','tao']; console.time("非冗長1"); var nonredundant1 = Object.getOwnPropertyNames(arr.reduce(function(seed, item, index) { seed[item] = インデックス; シードを返します。 },{})); console.timeEnd("非冗長1"); console.log(非冗長1); 結果は次のとおりです。 2. セットデータ構造の使用 セットは配列に似た構造ですが、セットのメンバーには重複する値は存在しません。 set() 関数は、配列または配列のようなパラメータを受け入れて、セット オブジェクトを生成できます。 Array.from メソッドは、2 種類のオブジェクト (配列のようなオブジェクト (配列のようなオブジェクトと反復可能なオブジェクト)、ES6 で追加されたデータ構造 Set および Map を含む) を実際の配列に変換するために使用されます。 var arr = ['qiang','ming','tao','li','liang','you','qiang','tao']; 関数 unique(arr) { Array.from(new Set(arr)) を返します } console.time("非冗長2"); var nonredundant2 = unique(arr); console.timeEnd("非冗長2"); console.log(非冗長2); 結果は次のとおりです。 3. forループとスプライスの使用 関数 unique(arr) { (var i = 0; i < arr.length; i++) の場合 { (var j = i + 1; j < arr.length; j++) の場合 { if (arr[i] == arr[j]) { // 最初のものは 2 番目のものと等しいので、splice メソッドは 2 番目のものを削除します arr.splice(j, 1); j--; } } } arr を返します。 } console.time("非冗長3"); var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao']; var nonredundant3 = unique(arr); console.timeEnd("nonredundant3"); console.log(非冗長3); 結果は次のとおりです。 4. indexOfを使用して重複の削除を決定する 関数 unique(arr) { var 配列 = []; (var i = 0; i < arr.length; i++) の場合 { 配列のindexOf(arr[i]) === -1の場合{ 配列.push(arr[i]) } } 配列を返します。 } var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao']; console.time("非冗長4"); var nonredundant4 = unique(arr); console.timeEnd("非冗長4"); console.log(非冗長4); 結果は次のとおりです。 5. 並べ替えを使用して重複を並べ替えて削除する 関数 unique(arr) { arr = arr.sort() var arry = [arr[0]]; (var i = 1; i < arr.length; i++) の場合 { もし (arr[i] !== arr[i - 1]) { arrry.push(arr[i]); } } リターン arry; } var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao']; console.time("非冗長5"); var nonredundant5 = unique(arr); console.timeEnd("非冗長5"); 結果は次のとおりです。 6. フィルターを使用する 関数 unique(arr) { var obj = {}; arr.filter(function(item, index, arr){ を返します。 obj.hasOwnProperty(typeof item + item) を返します。false の場合: (obj[typeof item + item] = true) }) } var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao']; console.time("非冗長6"); var nonredundant6 = unique(arr); console.timeEnd("非冗長6"); console.log(非冗長6); 結果は次のとおりです。 7. マップデータ構造を使用して重複を削除する 関数 unique(arr) { map = new Map(); let array = new Array(); // 配列は結果を返すために使用されます for (let i = 0; i < arr.length; i++) { if (map.has(arr[i])) { // キー値がある場合 map.set(arr[i], true); } それ以外 { map.set(arr[i], false); // そのようなキー値が存在しない場合はarr.push(arr[i]); } } 配列を返します。 } var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao']; console.time("非冗長7"); var nonredundant7 = unique(arr); console.timeEnd("非冗長7"); console.log(非冗長7); 結果は次のとおりです。 8. 重複を削除するにはreduceとincludeを使用する 関数 unique(arr){ arr.reduce((prev,cur) => prev.includes(cur) ? prev : [...prev,cur],[]); を返します。 } var arr = ['qiang', 'ming', 'tao', 'li', 'liang', 'you', 'qiang', 'tao']; console.time("非冗長8"); var nonredundant8 = unique(arr); console.timeEnd("非冗長8"); console.log(非冗長8); 結果は次のとおりです。 よく使われる JavaScript 配列重複排除の実践的なソースコードに関するこの記事はこれで終わりです。より関連性の高い js 配列重複排除コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linuxでのcrontabの使い方と注意点の詳しい説明
>>: OEL7.6 ソースコードから MYSQL5.7 をインストールするチュートリアル
序文みなさんこんにちは。CSS ウィザードの alphardex です。この記事では、three.j...
目次序文ネットワーク速度のフロントエンド判定原理のまとめ1. img を読み込むか Ajax リクエ...
序文Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が単一の値...
この記事では、棒グラフの動的な表示を実現するためのvue echartsの具体的なコードを参考までに...
ハイパーフ公式サイトHyperf 公式ドキュメントのインストール1. Dockerの使用docker...
目次1 Nginxのインストール2 Nginxの設定3 ホストファイルを変更する4 テストNginx...
vue-routerには2つのモードがありますハッシュモード履歴モード1. シングルページアプリケー...
目次問題分析なぜカプセル化なのかパッケージの内容は何ですか?テーブルコンポーネントをカプセル化するデ...
問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...
1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...
目次1. データベース内の MySQL ステータスを確認します。 2. 設定ファイルを変更します。 ...
1. コマンドの紹介時間は、コマンドの実行に費やされた時間や関連するシステム リソース、その他の情報...
MySQL を学習すると、インストール後にいくつかのデフォルトのデータベースが付属していることに気付...
新しい質問急いで来て、急いで行ってください。 「垂直グリッドとプログレッシブ行間隔 (パート 1)」...
CSSフィルターを使用してマウスオーバー効果を記述する <div class="fi...