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
}

现在我想做一个类似的事情,除了这次我将搜索一个数组,而不是返回真/假,我想返回一个包含字符串弹出位置的新数组。

例如,如果我的变量内容是 ["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 回答