7

ええと、私はPHPの人間であり、単純な設計関連の操作以外のJSに関しては、私のJSスキルはほとんどありません。

次の操作はPHPでは簡単です(JSでもそうかもしれませんが、ここではなじみのない構文で戦っています...)

これはある種の入力検証です

var ar = ["BRS201103-0783-CT-S", "MAGIC WORD", "magic", "Words", "Magic-Word"];

    jQuery(document).ready(function() {
        jQuery("form#searchreport").submit(function() {
        if (jQuery.inArray(jQuery("input:first").val(), ar) != -1){ 
                jQuery("#contentresults").delay(800).show("slow");

            return false;
          }

この質問には2つの部分があります。

  • 1-配列で大文字と小文字を区別しないようにするにはどうすればよいですか?

例-ANDまたはまたはBRS201103-0783-CT-Sと同じ結果が得られますbrs201103-0783-ct-sBrs201103-0783-CT-sMAGIC magic Magic MaGIc

基本的に、配列にはignoreCase()のようなものが必要ですが、jQueryでもJSでもそれへの参照が見つかりませんでした...

私は試しtoLowerCase()ました-しかし、それはアレイで動作していません(反復??)そしてまた、それは混合ケースを解決しますか?

  • 2-要素の一部または組み合わせのみを認識する関数を作成するにはどうすればよいですか?

例-1つだけ"word"を入力する場合は、として渡します"words"。また、誰かが入力"some word"する場合は、渡す必要があります(「単語」を含む)

4

2 に答える 2

8

パート1

配列を完全に小文字に処理し、入力を小文字にすることができるため、大文字と小文字をindexOf()区別しない検索を実行しているように機能します。

toLowerCase()すでにわかっているように、文字列を小文字にすることができます。

配列を行うには、次を使用できます...

arr = arr.map(function(elem) { return elem.toLowerCase(); }); 

パート2

たとえば、部分文字列を確認できます...

// Assuming you've already transformed the input and array to lowercase.
var input = "word";
var words = ["word", "words", "wordly", "not"];

var found = words.some(function(elem) { return elem.indexOf(input) != -1; });

または、このインスタンスでは、チェックする前toLowerCase()にそれぞれを呼び出して、配列をすべて小文字に変換することをスキップできます。elemindexOf()

some()古い IE ではサポートされてmap()いませんが、簡単にポリフィルできます。それぞれのポリフィルの例は、リンクされたドキュメントで入手できます。

Fabrício Mattéも指摘したように、jQuery に相当するものをここでfor$.map()およびArray.prototype.map()with$.grep()プロパティlengthforで使用できますArray.prototype.some()。次に、ブラウザの互換性を無料で取得します。

于 2012-07-16T00:54:57.950 に答える
1

配列に大文字と小文字を区別しない要素が含まれているかどうかを確認するには、次のコードを使用しました。

    ret = $.grep( array, function (n,i) {
        return ( n && n.toLowerCase().indexOf(elem.toLowerCase())!=-1 );
    }) ;

これは、大文字と小文字を区別しない配列の一致で遊ぶためのフィドルです

于 2016-10-17T22:20:47.077 に答える