gpt4 book ai didi

javascript - 如何通过某些对象的多个(全部)值来过滤数组?

转载 作者:行者123 更新时间:2023-11-28 11:44:38 25 4
gpt4 key购买 nike

在下面的代码中,我尝试将 persons 数组减少为与 filters 对象完美匹配的人员。

当前输出是一个与任何对象键都匹配的对象数组。我如何调整它以仅返回第二个人 - 与所有过滤器完美匹配的人?

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 person
}
}
}

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

最佳答案

您应该使用函数 every 来完成此操作。

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'   }, ],
filters = {city: 'London',age: 42,name: 'Josh'};

function myOwnFilter(person) {
return Object.keys(filters).every(key => filters[key] === person[key]);
}

var filtered = persons.filter(myOwnFilter);
console.log(filtered);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何通过某些对象的多个(全部)值来过滤数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54809861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com