0

検索を行うときに大文字と小文字を区別しないようにしていますが、これを行う最善の方法は何ですか? (Jquery は使用しないでください)

function search(searchValue) {
    var found = [];
    for (var i = 0; i < photoData.length; i++) {
        if (photoData[i].description.search(searchValue) != -1) {
            found.push(photoData[i]);
        }
}
console.log(found);
return found;
}

やってみsearch(searchValue.ignoreCase)ましたが、大文字の重複が返されます。提案はありますか?photoDataの記述の大文字小文字を無視したい

4

3 に答える 3

3

new RegExp次のように、大文字と小文字を区別しないフラグを作成して使用します。

function search(array, searchValue) {
    var matchedValues, re, i, j, cur;

    matchedValues = [];
    re = new RegExp(searchValue, "i");
    for (i = 0, j = array.length; i < j; i++) {
        cur = array[i];
        if (cur.description.search(re) !== -1) {
            matchedValues.push(cur);
        }
    }
    return matchedValues;
}

デモ: http://jsfiddle.net/7veds/

メソッドも使用できますがArray.filter

function search(array, searchValue) {
    var re = new RegExp(searchValue, "i");
    return array.filter(function (item, idx) {
        return item.description.search(re) !== -1;
    });
}

デモ: http://jsfiddle.net/TKphp/

参照:

于 2013-08-17T03:43:05.677 に答える
0

これは、配列内の大文字と小文字を区別しない検索からの小さなスニペットです

function SearchArray( element, array ) {
var len = array.length, str = element.toString().toLowerCase();
for ( var i = 0; i < len; i++ ) {
    if ( array[i].toLowerCase() == str ) { return i; }
}
return -1;

}

于 2014-10-30T12:06:07.313 に答える