javascript - 基于对象属性的子数组过滤数组
问题描述
给定以下对象数组,我正在尝试研究如何根据事件数组过滤顶部数组,该数组具有包含 ID 为 30 的对象
var staff = [];
staff.push({
Id: 122,
Events: [
{Id: 30,Name: "Foo"},
{Id: 57,Name: "Bar"}
]});
staff.push({
Id: 122,
Events: [
{Id: 57,Name: "Bar"}
]});
到目前为止,我已经尝试了以下变体:
$.grep(staff, function (item) {
return item.Events.Id == 30
});
任何帮助将不胜感激
预期输出:
var staff = [{Id: 122, Events: [{Id: 30,Name: "Foo"},{Id: 57,Name: "Bar"}]}];
解决方案
var staff = [];
staff.push({
Id: 122,
Events: [
{ Id: 30, Name: 'Foo' },
{ Id: 57, Name: 'Bar' }
]
});
staff.push({
Id: 122,
Events: [{ Id: 57, Name: 'Bar' }]
});
const res = staff.filter((item) => item.Events.some((e) => e.Id === 30));
console.log(res);
推荐阅读
- matplotlib - 在 matplotlib 中使用 Latex 时如何将字体系列设置为“erewhon”?
- r - 在 Quanteda 中标记文本并使用字典进行分析
- apache-spark - 如何在没有 Hadoop 的情况下使用 Yarn 作为 Spark 资源管理器?
- docker - 在 Docker ASP.NET Core webapplication 中复制和使用 json-config 文件
- excel - 为数字组合开发适当的算法
- python - 检查cherrypy会话数据的年龄
- beautifulsoup - 我想用漂亮的汤来解析多个 HTML 文档,但我不能让它工作
- c - __libc_start_main 中的调试函数
- javascript - Javascript 中的双空格
- angular - 从带有超时的 mapbox-gl-js 传递带有集成地图的页面时,Angular e2e 测试失败 - 错误