首页 > 解决方案 > 基于对象属性的子数组过滤数组

问题描述

给定以下对象数组,我正在尝试研究如何根据事件数组过滤顶部数组,该数组具有包含 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"}]}];

标签: javascriptjquery

解决方案


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);


推荐阅读