Javascript 返回数组中匹配的对象

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

我正在尝试对每个keyup执行.filter()方法,以获取以下数组中与输入字段值匹配的对象列表:

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 | | nullnull
是“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)提出了一个关于案件不敏感的好观点,这可能会有所帮助。