JavaScript は、配列内でさまざまな順序で配置された文字列の検索を実装します_javascript のヒント
要件の説明: 配列のセットから、異なる順序で配置された文字列のセットの配列要素を見つけます。次のような配列があるとします:
[ 'abcd', 'hello', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc' ]
検索される結果は次のとおりです:
[ 'abcd'、'bdca'、'cadb' ]
ここでの重要な点は、一連の文字列の順序が異なるかどうかを判断することです。重要な点全体が解決されていれば、他のことは簡単に処理できます。
方法 1:
var stringClassify = function( arr ){
var arrLength = arr.length,
obj = {},
i = 0,
num、item、name、firstItem、strLength;
for( ; i 項目 = arr[i];
strLength = item.length;
num = 0;
// 単一文字を Unicode エンコードに変換します
// コードの合計を計算します
for( j = 0; j num = item.charCodeAt( j );
If( !firstItem ){
1stItem = item;
obj[num].push(item);
}
// 追加する文字列の最初の文字が
であるかどうかを確認します // 次の状況を避けるために別の文字列に表示します
// ['ad', 'da', 'bc']
else if( ~firstItem.indexOf(item.charAt(0)) ){
obj[num].push(item);
}
}
for( obj 内の名前){
console.log( obj[名前] );
}
};
方法 1 文字列「ad」と「bc」の Unicode エンコードが同じであることに注意してください。このとき、いずれかの文字列の最初の文字が他の文字列に出現するかどうかを検出するために追加の判断が必要です。文字列内にのみ出現する必要があります。
方法 2:
var stringClassify = function(){
var arrLength = arr.length,
obj = {},
i = 0,
番号、項目、名前、strArr、newStr;
for( ; i 項目 = arr[i];
strArr = arr[i].split( '' );
strArr.sort();
newStr = strArr.join( '' );
If( !obj[newStr] ){
obj[ newStr ] = [];
}
obj[ newStr ].push( item );
}
for( obj 内の名前){
console.log( obj[名前] );
}
};
方法 2 は、文字列を配列に変換し、その配列をソートすると、ソートされた文字列をオブジェクトのキーとして使用し、同じソートで保存します。
実際、両方のメソッドの原理は文字を Unicode エンコーディングに変換することですが、メソッド 1 は明示的な変換ですが、メソッド 2 で使用される並べ替えは暗黙的に変換されます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。
