Javascript 返回数组中匹配的对象
我正在尝试对每个keyup执行.filter()方法,以获取以下数组中与输入字段值匹配的对象列表:Javascript 返回数组中匹配的对象,javascript,Javascript,我正在尝试对每个keyup执行.filter()方法,以获取以下数组中与输入字段值匹配的对象列表: var peopleArray = [ { name: "Steve", email: "steve@yahoo.com" }, { name: "Sam", email: "sam@yahoo.com" }, { name: "Sarah", email: "sarah@yahoo.com" }, { name: "Kyle
var peopleArray = [
{
name: "Steve",
email: "steve@yahoo.com"
},
{
name: "Sam",
email: "sam@yahoo.com"
},
{
name: "Sarah",
email: "sarah@yahoo.com"
},
{
name: "Kyle",
email: "kyle@yahoo.com"
},
{
name: "Kody",
email: "kody@yahoo.com"
},
{
name: "Scarlet",
email: "scarlet@yahoo.com"
},
]
以下是我用来搜索的内容:
<input type="search" id="searchInput" placeholder="Search Activities" />
searchInput.addEventListener('keyup', function() {
searchPeople(searchInput.value);
})
function searchPeople(chars) {
//Search People and return a list of JSON objects
return //All JSON objects that matched
}
searchInput.addEventListener('keyup',function(){
searchPeople(searchInput.value);
})
功能搜索人员(chars){
//搜索人员并返回JSON对象列表
返回//匹配的所有JSON对象
}
我不熟悉这一点,所以我不太明白如何实现这一点。如果需要简单的字符串搜索,可以使用with返回包含输入的每个字符串:
function searchPeople(chars) {
return people.filter(function (person) {
return person.name.indexOf(chars) > -1;
});
}
如果indexOf
找到与chars
匹配的字符串,它将返回大于-1
的位置(索引)。这将匹配过滤器并保留该人员
如果愿意,可以展开筛选器谓词以检查名称
和电子邮件
:
function searchPeople(chars) {
return people.filter(function (person) {
return (person.name.indexOf(chars) > -1 || person.email.indexOf(chars) > -1);
});
}
这将根据姓名和电子邮件搜索人员。大写/小写不重要,因为它比较小写值和小写值 需要返回一个“truthy”值。因此,基本上它应该返回任何不是的内容:
false
,0
,未定义的,null
,NaN
或”
(空字符串)
将在另一个字符串中搜索一个字符串,若找到,则返回匹配值的数组;若未找到,则返回null。因此,如果match找不到任何内容,则返回行本质上是returnnull | | null由于null
是“falsy”,过滤器将从结果中排除此人
function searchPeople(chars) {
peopleArray.filter(function(person) {
var name = person.name.toLocaleLowerCase();
var email = person.email.toLocaleLowerCase();
var searchTerm = chars.toLocaleLowerCase();
return name.match(searchTerm) || email.match(searchTerm);
});
}
您想按姓名或电子邮件进行搜索吗?搜索的条件是什么?如果给定的字符
包含在名称
中,这正是我所需要的,而且比我最初想象的要简单得多。你还帮我省了几个小时想弄明白,谢谢@科蒂尔。很乐意帮忙。科里·丹尼尔森(Cory Danielson)提出了一个关于案件不敏感的好观点,这可能会有所帮助。