我正在尝试使用 ID 过滤我的事件对象。如果其中一个事件具有匹配的类别 ID,那么我想将其添加到新对象中。
我正在更新我原来的问题,因为 dots
属性是一个对象数组。所以下面的答案是行不通的
我有一个基本的fiddle
const selectedId = 62;
const filteredEvents = {};
const events = {
"2018-01-31": {
dots: [{
key: "test",
color: "red",
categories: [{
name: "cat 1",
id: 59
}, {
name: "cat 2",
id: 61
}, {
name: "cat 3",
id: 62
}]
}]
},
"2018-02-02": {
dots: [{
key: "test 1",
color: "blue",
categories: [{
name: "cat 1",
id: 59
}]
}]
},
"2018-02-04": {
dots: [{
key: "test 2",
color: "pink",
categories: [{
name: "cat 1",
id: 59
}]
}, {
key: "test 2",
color: "pink",
categories: [{
name: "cat 1",
id: 59
}]
}]
}
};
尝试在这里过滤:
Object.keys(events).dots.categories.filter(category => {
category.id === selectedId // remove if matching
});
我只想在过滤对象中使用此属性,因为它的类别 ID 为 62:
const events = {
"2018-01-31": {
dots: [{
key: "test",
color: "red",
categories: [{
name: "cat 1",
id: 59
}, {
name: "cat 2",
id: 61
}, {
name: "cat 3",
id: 62
}]
}]
}
最佳答案
您可以使用Object.values()
将对象转换为值数组,使用.find()
获取具有id的对象
等于 selectedId
const results = Object.values(events).filter(({dots:{categories}}) =>
categories.find(({id}) => id === selectedId)
).pop();
关于javascript - 过滤嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241687/