gpt4 book ai didi

javascript - 使用 .filter() 过滤 javascript 对象

转载 作者:行者123 更新时间:2023-11-30 20:07:48 25 4
gpt4 key购买 nike

有人知道这种使用 .filter() 函数过滤 javascript 对象的想法吗:

假设我有:

docs: [
{
"name": "Mike",
"address": "Canada",
"gender": "Male"
},
{
"name": "Jean",
"address": "China",
"gender": "Female"
},
{
"name": "Sakura",
"address": "England",
"gender": "Female"
}
]

是否可以这样过滤:

name = ''
age = ''
gender = 'Female'

因为这样做:

filtered_docs = docs.filter(function (el) {
return el.name == '' ||
el.address == '' ||
el.gender == 'Female';
});

将返回所有。

然后这样做:

filtered_docs = docs.filter(function (el) {
return el.name == '' &&
el.address == '' &&
el.gender == 'Female';
});

不会返回任何内容。

更新:我只想根据该条件返回数据。我希望返回 2 条女性性别的记录

更新这就是我想要实现的目标 enter image description here

最佳答案

您可以使用 objetc 作为键/值对进行过滤,并在第一步中仅采用具有所需值的键,例如 truthy稍后过滤的值。

然后通过仅检查具有要检查的值的键来过滤数组并将过滤器的这些键用于检查。仅返回匹配所有键和所需值的对象。

var docs= [{ name: "Mike", address: "Canada", gender: "Male" }, { name: "Jean", address: "China", gender: "Female" }, { name: "Sakura", address: "England", gender: "Female" }],
filter = { name: "", age: "", gender: "Female" },
keys = Object.keys(filter).filter(k => filter[k]),
result = docs.filter(o => keys.every(k => o[k] === filter[k]));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用 .filter() 过滤 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52696529/

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