ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript は、配列内でさまざまな順序で配置された文字列の検索を実装します_javascript のヒント

JavaScript は、配列内でさまざまな順序で配置された文字列の検索を実装します_javascript のヒント

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-05-16 16:35:15
オリジナル
1308 人が閲覧しました

要件の説明: 配列のセットから、異なる順序で配置された文字列のセットの配列要素を見つけます。次のような配列があるとします:

コードをコピーします コードは次のとおりです:

[ '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 では、文字列内の各文字を調べて、単一の文字を Unicode エンコーディングに変換し、エンコーディングの合計を計算します。abcd と bdca のエンコーディングの合計は一致します。最後に、エンコーディングとキーをオブジェクトとして使用して、エンコーディングと一貫した文字列を保存します。

方法 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 で使用される並べ替えは暗黙的に変換されます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート