按字母过滤数组

Mat*_*Boy 4 javascript arrays filtering

请原谅我,如果有人问过,但是我搜索过并没有找到我问题的具体实现.

无论如何,我目前正在学习JavaScript中的高阶函数,而我正在使用array.prototype.filter函数.我理解它的目的(正如它的名字所说的那样方便)但我在实现这个时遇到了麻烦:

所以,假设我有一系列名称,如下所示:

var names = ["Anna", "Bob", "Charles", "Daniel",
         "Allison", "Beatrice", "Cindy", "Fiona"];
Run Code Online (Sandbox Code Playgroud)

然后,我想,以所有以字母"A"开头的条目过滤该数组.我知道我可以做到这一点:

var filteredNames = names.filter(function(word) {
    return word[0] === "A";
});
Run Code Online (Sandbox Code Playgroud)

这样就可以了.但是说我希望不那么明确,让它更适应更多情况.假设我想对过滤进行编程,以便我可以说"仅返回索引[y]"处具有字母"x"的条目,例如"仅返回索引为[3]处具有字母"F"的条目.

我怎样才能做到这一点?

PMe*_*let 6

您可以定义自己的过滤功能:

function filter(names, index, letter) {
    var filteredNames = names.filter(function(word) {
       return word.charAt(index) === letter;
    });
    return filteredNames;
}
Run Code Online (Sandbox Code Playgroud)


axe*_*uch 5

我猜正则表达式会更灵活

var filteredNames = names.filter(function(word) {
    return /^A/.test(word);
});
Run Code Online (Sandbox Code Playgroud)

使用它的通用方法

function filterMatches(words, regexp) {
    return words.filter(function (word) {
         return regexp.test(word);
    });
}

filterMatches(words, /^A/); // for letter A, index 0
filterMatches(words, /^.{3}B/); // for letter B, index 4
Run Code Online (Sandbox Code Playgroud)