const arr = [
{
'name': 'test1',
'items': [
{
'name': 'test1-1',
id: 1
},
{
'name': 'test1-2',
id: 2
},
{
'name': 'test1-3',
id: 3
}
]
},
{
'name': 'test2',
'items': [
{
'name': 'test2-1',
id: 5
},
{
'name': 'test2-2',
id: 9
},
{
'name': 'test2-3',
id: 10
}
]
}
]
result = [
{
'name': 'test2-2',
id: 9
},
{
'name': 'test2-3',
id: 10
}
]
const ids = [ 9, 10 ];
const items = arr.flatMap(n => n.items);
// или
const items = Array.prototype.concat.apply([], arr.map(n => n.items));
// или
const items = arr.reduce((acc, n) => (acc.push(...n.items), acc), []);
const result = items.filter(n => ids.includes(n.id));
// или
const result = items.filter(function(n) {
return this.has(n.id);
}, new Set(ids));
// или
const itemsObj = Object.fromEntries(items.map(n => [ n.id, n ]));
const result = ids.reduce((acc, n) => ((n = itemsObj[n]) && acc.push(n), acc), []);