我的数组如下
test_list = [
{
id: 1,
test_name: 'Test 1',
members: [
{
user_id: 3
},
{
user_id: 4
}
],
},
{
id: 2,
test_name: 'Test 2',
members: [
{
user_id: 4
},
{
user_id: 5
},
],
},
{
id: 3,
test_name: 'Test 2',
members: [
{
user_id: 8
},
{
user_id: 10
},
],
}
]
我想过滤特定 user_id 的测试,例如如果 user_id = 4 我希望得到这个结果
{
id: 1,
...
},
{
id: 2,
...
},
我尝试过这个,但它只返回成员
test_list.filter(function(item) {
item.members.filter(function(member) {
if(member.user_id === 4) {
return item;
}
});
})
在这种情况下有人可以帮助我吗?
最佳答案
检查 members
数组中的对象的 .some
是否具有您要查找的 user_id
:
test_list = [{
id: 1,
test_name: 'Test 1',
members: [{
user_id: 3
},
{
user_id: 4
}
],
},
{
id: 2,
test_name: 'Test 2',
members: [{
user_id: 4
},
{
user_id: 5
},
],
},
{
id: 3,
test_name: 'Test 2',
members: [{
user_id: 8
}]
}
];
const filtered = test_list.filter(
({ members }) => members.some(
({ user_id }) => user_id === 4
)
);
console.log(filtered);
关于javascript - 数组内过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58516882/