【发布时间】:2021-05-08 07:18:25
【问题描述】:
我需要根据另一个数组sittersSelected 过滤dogs 和sitters inside 这个数组。 (可以用es6)。我的问题是处理 nested 数组。
不确定是否可行,但是...
数据
dogs = [
{
name: 'Alice',
sex: 'Female',
breed: 'German Shepherd',
sitters: [
{
id: '123',
name: 'Abby'
},
{
id: '456',
name: 'Manny'
},
{
id: '789',
name: 'Mel'
},
]
},
{
name: 'Buckley',
sex: 'Male',
breed: 'Border Collie',
sitters: [
{
id: '321',
name: 'Gustavo'
},
{
id: '654',
name: 'Tommy'
},
]
},
{
name: 'Bear',
sex: 'Male',
breed: 'Mixed',
sitters: [
{
id: '123',
name: 'Abby'
},
{
id: '135',
name: 'Owen'
},
]
},
];
sittersSelected = ["Abby","Manny"];
预期输出
filterResult = [
{
name: 'Alice',
sex: 'Female',
breed: 'German Shepherd',
sitters: [
{
id: '123',
name: 'Abby'
},
{
id: '456',
name: 'Manny'
},
]
},
{
name: 'Bear',
sex: 'Male',
breed: 'Mixed',
sitters: [
{
id: '123',
name: 'Abby'
},
]
},
];
我试过了
filterResult = dogs.filter(dog => dog.sitters.some(sitter => sittersSelected.includes(sitter.name)));
我设法过滤了dogs,但没有过滤sitters。还在 StackOverflow 上尝试了其他示例。有没有办法做到这一点?也许是.map()?
谢谢
【问题讨论】:
-
这两个列表的最大尺寸可能有多大?
-
@TobiahRex 挺大的,数据有更多选择……我只是用
dogs举例。
标签: javascript arrays ecmascript-6 filter