【发布时间】:2021-04-14 23:48:46
【问题描述】:
我有一个数组,我试图根据某个嵌套值进行过滤,而不获取任何其他元素。
const arrayData = [
{
country: "Country X",
games: [
{
gameTitle: 'Game1',
players: [{ name: 'John', status:'Active' },{ name: 'Rob', status:'Suspended' }]
},
{
gameTitle: 'Game2',
players: [{ name: 'Saly', status:'Blocked' }]
},
]
},
{
country: "Country Y",
games: [
{
gameTitle: 'Game1',
players: [{ name: 'Sindy', status:'Pending' },{ name: 'someone', status:'Rejected' }]
},
{
gameTitle: 'Game2',
players: [{ name: 'Alex', status:'New' },{ name: 'Nic', status:'Old' }]
},
]
},
];
我尝试过的:
let output = arrayData.filter(eachVal => {
let opt = eachVal.games.some((
{ players }) => players
.some(({ status}) => status === 'Active'));
return opt;
})
查找具有 status 值的 所有玩家 的预期结果:'Active':
{
country: "Country X",
games: [
{
gameTitle: 'Game1',
players: [{ name: 'John', status:'Active' }]
}
]
}
但是结果:
[{"country":"Country X","games":[{"gameTitle":"Game1","players":[{"name":"John","status":"Active"},{"name":"Rob","status":"Suspended"}]},{"gameTitle":"Game2","players":[{"name":"Saly","status":"Blocked"}]}]}]
【问题讨论】:
-
嗯,如果你想要活跃状态的玩家,你为什么要国家和游戏数组?
-
@TheBombSquad 因为我也需要展示他们的价值观!
-
@Sam 这个问题可能会帮助stackoverflow.com/questions/38375646/…
-
我以前见过,但过滤器仅适用于第一级,我无法在玩家列表中执行此操作。 @OzgurSar
-
刚刚解决了.. 我使用的嵌套过滤逻辑
标签: javascript arrays