1

項目名 (item) を含むスペースを含む文字列の配列を取得し、文字列 (str) を検索するコードを作成しようとしています。検索文字列のすべての可能なケースをキャッチできるように、最初に配列を小文字に変換しようとしない限り、コードは正常に機能します。添付の jsfiddle のコードは Firefox では正常に動作しますが、WebKit または IE では動作しません。誰でも洞察を貸してもらえますか?

http://jsfiddle.net/Y6zKx/16/


//項目名の配列、0 には「文字列」が含まれます

var items = new Array('Item Name Contains String', 'This item is missing it');

//関数 searchArray は、文字列の配列 strArray で文字列 str を検索します

function searchArray(str, strArray) {
    for (var j = 0; j < strArray.length; j++) {
        if (strArray[j].match(str)) return j;
    }
    return -1;
}

//アイテム配列を小文字に変換して、検索で大文字と小文字を区別しないようにします

//これは Firefox では機能しますが、Webkit では機能しません

var lowerCaseItems = $.map(items, String.toLowerCase);
alert(lowerCaseItems);

//これは同じ出力を作成するように見えますが、Firefox でも Webkit でも機能しません:

alert(items.toString().toLowerCase());

//配列に「battery」が含まれている場合、関数は正の位置を返します

contains = searchArray("string", lowerCaseItems);
alert(contains);

// ID が見つかった場合、メッセージを表示します

if ($('#noItems').length) {
    $('#emptyCart').show();
}

// str が見つからない場合、メッセージを表示します

if (contains == -1) {
    $('#noString').show();
}
//else 
else {
    alert("String Found");
}
4

3 に答える 3

0

$.map() 関数を正しく使用していません。2 つの引数を持つコールバック関数が必要です。ドキュメントを参照して、これを試してください。

var lowerCaseItems = $.map(items, 
        function(item, index) {
            return item.toLowerCase();
        });

Chromeで動作します。

于 2013-10-14T18:32:02.720 に答える