2 つの文字列配列があることがわかっています。それらを a1、a2 と呼びましょう。
現在のタスクは、a2の要素substringsであるすべての要素をa1から見つけて、新しい配列に格納することです。
この新しい配列を 辞書順で並べ替えて返します。
例を見てみましょう:
a1 = ["arp", "live", "strong"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
は ["arp", "live", "strong"] を返します
ここで、"arp" は "harp" の部分文字列であり、"live" は "lively"部分文字列なので、それを返すことができます。
別の例を見てみましょう:
a1 = [「タープ」、「ネズミ」、「雄牛」]
a2 = [「活発」、「生きている」、「ハープ」、「鋭い」、「アームストロング」]
Returns []
a1 の部分文字列ルールがどれも満たされていないため、空の配列が返されます。
それでは、それを解決する方法を見てみましょう:
まず、部分文字列を見たときに、それが部分文字列であるかどうかを判断するメソッドが必要であると推定します:
if(typeof String.prototype.isSubstringOf === "undefined"){ String.prototype.isSubstringOf = function(str){ return str.indexOf(this) >= 0; }; }
次に、 a1 を実行します。 1 つずつ、現在の要素が a2 の要素の部分文字列であるかどうかを判断し、そうであれば、それを新しい配列にプッシュします。
その後、ループが終了すると、新しい配列が埋められます。
辞書順ソートを行うにはどうすればよいですか?まだアルゴリズムを記述する必要がありますか?
JavaScript に組み込まれている並べ替えは、デフォルトでは辞書順です。
その後は、新しい配列を直接 sortして返すだけです。
function inArray(array1,array2){ var newArray = []; for(var i=0;i<array1.length;i++){ var temp = array1[i]; if(temp){ for(var j=0;j<array2.length;j++){ if(temp.isSubstringOf(array2[j])){ newArray.push(temp); break; } } } } return newArray.sort(); }
上記は JavaScript に関する楽しい質問です。これには何が入っていますか?関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。