実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配列の重複排除のさまざまな方法です。 1.配列の各要素を他の要素と順番に比較し、重複する要素を見つけて削除する var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5, 5] 関数noRepeat1(arr) { for(var i = 0; i < arr.length-1; i++){ for(var j = i+1; j < arr.length; j++){ (arr[i]===arr[j])の場合{ arr.splice(j,1); j--; } } } arr を返します。 } var arr2 = noRepeat1(arr); console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8] 2. indexOf() メソッドを使用して、配列内でこの要素が最初に出現する位置の添え字がループの添え字と等しいかどうかを判断します。 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5] 関数noRepeat2(arr) { (var i = 0; i < arr.length; i++) の場合 { (arr.indexOf(arr[i]) != i) の場合 { arr.splice(i,1);//配列要素を削除した後、配列の長さが1減少し、次の要素が前方に移動します i--;//配列の添え字ロールバック} } arr を返します。 } var newArr = noRepeat2(arr); console.log(newArr); //[1, 23, 3, 5, 6, 7, 9, 8] 3. 配列内でフィルターメソッドを使用する var arr = ['リンゴ','バナナ','梨','リンゴ','オレンジ','オレンジ']; console.log(arr) //["リンゴ", "バナナ", "梨", "リンゴ", "オレンジ", "オレンジ"] var newArr = arr.filter(function(値,インデックス,self){ self.indexOf(値) === インデックスを返します。 }); console.log(newArr); //["リンゴ", "バナナ", "ナシ", "オレンジ"] 4. 新しい配列を使用して、indexOf メソッドを通じて配列内の現在の要素のインデックスを決定します。ループの添え字と等しい場合は、それを新しい配列に追加します。 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5]; console.log(arr) //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5] 関数noRepeat4(arr) { var ret = []; (var i = 0; i < arr.length; i++) の場合 { (arr.indexOf(arr[i]) == i)の場合{ ret.push(arr[i]); } } ret を返します。 } var arr2 = noRepeat4(arr); console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8] 5. 空のオブジェクトを使用して、新しい配列にすでに格納されている要素を記録します。 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; console.log(arr) //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5] var obj = {}; var newArr = []; for(var i=0;i<arr.length;i++){ if(!obj[arr[i]]){ obj[arr[i]] = true; 新しいArr.push(arr[i]); } } console.log(newArr); //[1, 23, 3, 5, 6, 7, 9, 8] 6. 新しい配列を使用して、新しい配列に要素が存在するかどうかを判断します。存在しない場合は、新しい配列に要素を追加します。 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5] 関数noRepeat6(arr){ var newArr = []; for(var i = 0; i < arr.length; i++){ (newArr.indexOf(arr[i]) == -1)の場合{ 新しいArr.push(arr[i]); } } newArr を返します。 } var arr2 = noRepeat6(arr); console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8] 7. 新しい配列を使用して、要素が新しい配列に存在するかどうかを判断します。存在しない場合は、要素を新しい配列に追加します (元の配列の長さは変更されませんが、文字列順に並べ替えられます) var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5] 関数noRepeat7(arr) { var ret = [], end; // 繰り返し要素を比較するために使用される一時変数 arr.sort(); // 数値を再ソート end = arr[0]; ret.push(arr[0]); (var i = 1; i < arr.length; i++) の場合 { if (arr[i] != end){//現在の要素が一時要素と等しくない場合は、この要素を新しい配列に追加します ret.push(arr[i]); 終了 = arr[i]; } } ret を返します。 } var arr2 = noRepeat7(arr); console.log(arr2); //[1, 23, 3, 5, 6, 7, 8, 9] 8. この方法では、新しいアレイの助けを借りて元のアレイを直接変更するのではなく、重複排除後のアレイをソートします。 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; console.log(arr); //[1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5] 関数noRepeat8(arr) { var end; // 繰り返し要素を比較するために使用される一時変数 arr.sort(); // 数値を再ソート end = arr[0]; (var i = 1; i < arr.length; i++) の場合 { if (arr[i] == end){//現在の要素が一時要素と等しい場合は、配列からこの要素を削除します。arr.splice(i,1); 私 - ; }それ以外{ 終了 = arr[i]; } } arr を返します。 } var arr2 = noRepeat8(arr); console.log(arr2); //[1, 23, 3, 5, 6, 7, 8, 9] 9. 二重ループは元の配列を変更する var arr = [1,1,2,2,3,3,4,4,5,5,4,3,1,2,6,6,6,6]; console.log(arr); //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 1, 2, 6, 6, 6, 6] 関数noRepeat9(arr){ (var i = 0; i < arr.length; i++) の場合 { (var j = 0; j < arr.length; j++) の場合 { if (arr[i] == arr[j] && i != j){//繰り返しの数字を削除します arr.splice(j, 1); } } } arr を返します。 } var arr2 = noRepeat9(arr); console.log(arr2); //[1, 2, 3, 4, 5, 6] 10. 新しい配列の助けを借りて var arr = [1,1,2,2,3,3,4,4,5,5,4,3,2,1,1,1]; console.log(arr); //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 2, 1, 1, 1] var newArr = []; (var i = 0; i < arr.length; i++) の場合 { var repArr = []; // 繰り返しデータの後の添え字を受け取る // 内部ループは繰り返しデータのある添え字を見つける for (var j = i + 1; j < arr.length; j++) { (arr[i] == arr[j])の場合{ repArr.push(j);//次の繰り返しデータの添え字を見つけます} } // コンソールログ(repArr); if (repArr.length == 0){//繰り返し配列に値がない場合、繰り返しデータではないことを意味します newArr.push(arr[i]); } } console.log(newArr); //[5, 4, 3, 2, 1] 11. ES6が提供するSet構造の助けを借りて var arr = [1,1,2,2,3,3,4,4,5,5,4,3,2,1,1,1]; console.log(arr); //[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 4, 3, 2, 1, 1, 1] 関数noRepeat11(arr){ var newArr = []; var myset = new Set(arr); //Set構造体が重複したデータを受け取れないという機能を使用する for(var val of myset){ newArr.push(val) } newArr を返します。 } var arr2 = noRepeat11(arr) console.log(arr2); //[1, 2, 3, 4, 5] 上記は、js 配列の重複排除の 11 の方法の詳細です。js 配列の重複排除の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQL のスローログオンラインの問題と最適化ソリューション
>>: Linux redis-Sentinel 設定の詳細
まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...
目次使いやすいプロジェクトを作成するvue-cli 作成ヴィートクリエイションvue-routerを...
序文MySQL では、クロスデータベース クエリは主に 2 つの状況に分けられます。1 つは同じサー...
この記事では、例を使用して、MySQL 8 の共通テーブル式 (CTE) の使用方法を説明します。ご...
この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...
テクノロジーファンHTMLウェブページ、知っておくべきYouyou が開発した vue フロントエン...
UCenter Homeは、ComsenzがリリースしたSNSサイト構築システムです。最新バージョン...
Vmvare が仮想マシンのディスク サイズを設定した後、ディスク領域が不足していることがわかりまし...
私はフロントエンド プロジェクトの開発に常に vscode を使用してきたため、現在ではいくつかの小...
この記事では、VMware WorkstationにKylinをインストールする方法を参考までに紹介...
参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...
目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...
クリックされたボタンには赤い画像スタイルを実装し、選択されていない他のボタンには灰色の画像スタイルを...
1. 自然なレイアウト<br />レイアウトは変更せずに自動的に左揃えになります。 2....
1 Alibaba Cloud コンソールに入り、ドメイン名コンソールを見つけて、バインドするドメイ...