Javascript 如何按某个对象的多个(全部)值筛选数组?

Javascript 如何按某个对象的多个(全部)值筛选数组?,javascript,Javascript,在下面的代码中,我试图将persons数组简化为与filters对象完全匹配的persons 当前,输出是在任何对象键中具有匹配项的对象数组。我如何调整它以只返回第二个人-与所有过滤器完全匹配的人 个人变量=[ {城市:'London','age':18,'name':'Josh'}, {城市:'London','age':42,'name':'Josh'}, {城市:'纽约','年龄':42,'姓名':'迈克'}, {城市:'Tokyo','age':33,'name':'Kazuna'},

在下面的代码中,我试图将persons数组简化为与filters对象完全匹配的persons

当前,输出是在任何对象键中具有匹配项的对象数组。我如何调整它以只返回第二个人-与所有过滤器完全匹配的人

个人变量=[ {城市:'London','age':18,'name':'Josh'}, {城市:'London','age':42,'name':'Josh'}, {城市:'纽约','年龄':42,'姓名':'迈克'}, {城市:'Tokyo','age':33,'name':'Kazuna'}, ] 变量过滤器={ 城市:“伦敦”, 年龄:42,, 姓名:“Josh”, } 函数过滤器{ 对于Object.keysfilters的let键{ 如果人员[键]==过滤器[键]{ 返回人 } } } var filtered=persons.filterperson=>filterperson
console.logfiltered您应该每隔一天使用该函数来完成此操作

var persons=[{城市:'伦敦','年龄':18,'姓名':'乔什'},{城市:'伦敦','年龄','姓名':'乔什'},{城市:'纽约','年龄','姓名':'迈克'},{城市:'东京','年龄':33,'姓名':'卡祖纳'},], 过滤器={城市:'London',年龄:42岁,姓名:'Josh'}; 函数myOwnFilterperson{ return Object.keysfilters.everykey=>filters[key]==person[key]; } var filtered=persons.filtermyOwnFilter; console.logfiltered; .as console wrapper{max height:100%!important;top:0;}您可以使用&&在筛选器中创建条件

个人变量=[{ 城市:“伦敦”, 年龄:18岁,, “姓名”:“乔希” }, { 城市:“伦敦”, 年龄:42岁,, “姓名”:“乔希” }, { 城市:“纽约”, 年龄:42岁,, “姓名”:“迈克” }, { 城市:"东京",, 年龄:33岁,, “姓名”:“Kazuna” }, ] 变量过滤器={ 城市:“伦敦”, 年龄:42,, 姓名:“Josh”, } var filtered=persons.filterfunctionperson{ 返回person.city===filters.city&&person.age===filters.age&&person.name===filters.name }
console.logfiltered您可以获取filters对象的条目,并使用每个条目检查每个人 ,如果每个谓词都为true,则返回true。 var persons=[{城市:'London','age':18,'name':'Josh'},{城市:'London','age':42,'name':'Josh'},{城市:'NewYork','age':42,'name':'Mike'},{城市:'Tokyo','age':33,'name':'Kazuna'}, 过滤器={城市:'London',年龄:42岁,姓名:'Josh'}, filterEntries=Object.entriesfilters, 结果=persons.filterperson=>filterEntries.every[k,v]=>person[k]==v;
console.logresult 使用“每个”以确保所有内容都匹配

个人变量=[ {城市:'London','age':18,'name':'Josh'}, {城市:'London','age':42,'name':'Josh'}, {城市:'纽约','年龄':42,'姓名':'迈克'}, {城市:'Tokyo','age':33,'name':'Kazuna'}, ] 变量过滤器={ 城市:“伦敦”, 年龄:42,, 姓名:“Josh”, } const result=人 .filterperson=> Object.KeyFilters .everykey=> 过滤器[键]==人[键]
console.logresult你在找这样的东西吗

var persons = [
    {city: 'London', 'age': 18, 'name': 'Josh'},
    {city: 'London', 'age':42, 'name': 'Josh'},
    {city: 'New York', 'age': 42, 'name': 'Mike'},
    {city: 'Tokyo', 'age': 33, 'name': 'Kazuna'},
]

var filters = {
    city: 'London',
    age: 42,
    name: 'Josh',
}

function filter(person){
    for (let key of Object.keys(filters)) {
        if (person[key] !== filters[key]) {
            return false;
        }
    }
    return true;
}



var filtered = persons.filter((person) => filter(person))
console.log(filtered)

你想用每一个