基于对象属性的子数组过滤数组
Posted
技术标签:
【中文标题】基于对象属性的子数组过滤数组【英文标题】:Filter array based on sub array of objects properties 【发布时间】:2021-03-13 05:50:21 【问题描述】:鉴于以下对象数组,我正在尝试根据具有 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"]];
【问题讨论】:
【参考方案1】: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);
【讨论】:
非常感谢,需要将内部对象与外部对象一样过滤staff.filter(item => item.Events.some(e => e.Id === 30))
在这里会好很多,因为如果找到匹配项,它会提前返回。以上是关于基于对象属性的子数组过滤数组的主要内容,如果未能解决你的问题,请参考以下文章