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"的条目.
我怎样才能做到这一点?
您可以定义自己的过滤功能:
function filter(names, index, letter) {
var filteredNames = names.filter(function(word) {
return word.charAt(index) === letter;
});
return filteredNames;
}
Run Code Online (Sandbox Code Playgroud)
我猜正则表达式会更灵活
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)