3 回答
TA贡献1815条经验 获得超6个赞
这会有所帮助
kids.filter((x) => x.pets.filter((y) => y.type === 'cat').length > 0);
TA贡献1794条经验 获得超7个赞
疯狂的单线,有点工作:
const catLovers = kids.map(k => k.pets.some(p => p.type === 'cat') ? {...k, pets: k.pets.filter(p => p.type === 'cat')} : null).filter(k => k)
它实现了以下算法:“对于每个至少有一只猫的孩子,只用猫创建新的数组记录(否则为 null),然后过滤掉空记录”。
可能会添加格式以提高可读性,但在那之后它不会是单行的:)
TA贡献1835条经验 获得超7个赞
如果我理解清楚,你只想要有猫的孩子,但在他们的宠物清单中,只有猫。
这是我的建议:
const kids = [
{ name: 'alice',
age: 13,
pets: [
{ type: 'fish', pet_name: 'nemo' },
{ type: 'cat', pet_name: 'snuffles'},
{ type: 'cat', pet_name: 'pixel'}
]
},
{ name: 'bob',
age: 7,
pets: [
{ type: 'dog', pet_name: 'rover' }
]
},
{ name: 'chris',
age: 15,
pets: [
{ type: 'cat', pet_name: 'fluffy' },
{ type: 'donkey', pet_name: 'eeyore' }
]
}
];
const owners = [];
const type = 'cat';
kids.forEach(kid => {
kid.pets = kid.pets.filter(pet => pet.type === type);
if (kid.pets.length)
return owners.push(kid);
});
console.log(owners);
添加回答
举报