在数组中查找数组中的值时,如何在JavaScript中的filter
中应用filter
?
比方说,我想要获得其团队包括Jane Smith
的所有construction
项目。
我意识到我在这里发明了一些疯狂的JavaScript,我只是想让你看看我想要什么。
const result = myArray.filter(x => x.type === "construction" && x.team.filter(y => y.name.includes("Jane Smith")));
下面是我想要过滤的数组:
[
{
"type": "construction",
"name": "Project A",
"team": [
{
"name": "John Doe",
"position": "Engineer"
},
{
"name": "Jane Smith",
"position": "Architect"
}
]
},
{
"type": "construction",
"name": "Project B",
"team": [
{
"name": "Walt Disney",
"position": "Creative Director"
},
{
"name": "Albert Einstein",
"position": "Scientist"
}
]
},
{
"type": "remodelling",
"name": "Project C",
"team": [
{
"name": "John Travolta",
"position": "Manager"
}
]
}
]
发布于 2018-07-20 04:09:08
您可以使用Array#some
来检查团队。
本提案对对象使用destructuring assignment。
var array = [{ type: "construction", name: "Project A", team: [{ name: "John Doe", position: "Engineer" }, { name: "Jane Smith", position: "Architect" }] }, { type: "construction", name: "Project B", team: [{ name: "Walt Disney", position: "Creative Director" }, { name: "Albert Einstein", position: "Scientist" }] }, { type: "remodelling", name: "Project C", team: [{ name: "John Travolta", position: "Manager" }] }],
result = array.filter(({ type, team }) =>
type === "construction" && team.some(({ name }) => name === "Jane Smith"));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
发布于 2018-07-20 04:07:46
也许是像下面这样的东西?
const result = myArray.filter(x => x.type === "construction" && x.team.filter(y => y.name.includes("Jane Smith")).length > 0);
基本上,我只是检查新过滤的数组长度是否大于0。
https://stackoverflow.com/questions/51430908
复制相似问题