ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の楽しい質問: 何が入っているのですか?

JavaScript の楽しい質問: 何が入っているのですか?

黄舟
黄舟オリジナル
2017-02-13 16:02:441064ブラウズ

2 つの文字列配列があることがわかっています。それらを a1a2 と呼びましょう。

現在のタスクは、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) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。