1

大文字と小文字の区別や順序に関係なく、文字列から個々の文字を検索する関数を作成しました。これがその外観です。

function match(string, pattern) {

    string = string.toLowerCase();
    pattern = pattern.toLowerCase();
    var patternarray = pattern.split("");
    for (i = 0; i < pattern.length; i++) {
        if (patternarray[i] >= "a" && patternarray[i] <= "z") {
            if (string.indexOf(patternarray[i]) == -1) return false
        }
    }
    return true
}

今回は配列を検索することを除いて、同様のことを行いたいと思います。true/false を返す代わりに、文字列がポップアップする場所を含む新しい配列を返したいと思います。

たとえば、変数の内容が ["Oranges","Apples","Bananas"] で、検索が "n" の場合、関数は [0,2] を返します。JavaScript初心者なので丁寧に教えていただけると助かります。

ありがとう!

4

2 に答える 2

0
function matchArray(array, pattern) {
    var i,
        len = array.length,
        result = [];

    for (i = 0; i < len; ++i) {
        if (match(array[i], pattern)) {
            result.push(i);
        }
    }
    return result;
}
于 2013-11-04T19:03:33.120 に答える
0

Underscorejs には、これを処理する関数があります。フィルター機能を見てみましょう。真偽テストに合格したアイテムを含む新しい配列を返す機能があります。

var aArray = _.filter(['asdf','ddd','afsf'], function(item){
  return (item.indexOf('a') !== -1);
}
于 2013-11-04T18:54:33.457 に答える