Javascript 按对象值的嵌套数组筛选对象数组
假设我有一个对象数组,每个对象都包含一个嵌套的对象数组Javascript 按对象值的嵌套数组筛选对象数组,javascript,arrays,multidimensional-array,ecmascript-6,filter,Javascript,Arrays,Multidimensional Array,Ecmascript 6,Filter,假设我有一个对象数组,每个对象都包含一个嵌套的对象数组likes: [ { id: 1, title: 'Lorem', private: false, likes: [ { id: 01, username: 'mike' }, { id: 02, username: 'john' } ] }, { id: 2, title: 'Ipsum', private: true, likes:
likes
:
[
{
id: 1,
title: 'Lorem',
private: false,
likes: [
{ id: 01, username: 'mike' },
{ id: 02, username: 'john' }
]
},
{
id: 2,
title: 'Ipsum',
private: true,
likes: [
{ id: 03, username: 'steve' },
{ id: 04, username: 'mike' },
{ id: 05, username: 'sara' }
]
},
{
id: 3,
title: 'Dolor',
private: false,
likes: [
{ id: 06, username: 'brad' },
{ id: 07, username: 'cameron' },
{ id: 08, username: 'liam' }
]
}
]
如何根据外部数组的items嵌套数组中的username值筛选外部数组?假设输出包含在其内部数组对象中的项,其属性为
username:'mike'
?您可以通过查看嵌套数组进行筛选
var data=[{id:1,标题:'Lorem',private:false,喜欢:[{id:01,用户名:'mike'},{id:02,用户名:'john'}]},{id:2,标题:'Ipsum',private:true,喜欢:[{id:03,用户名:'steve'},{id:04,用户名:'mike'},{id:05,用户名:'sara'},{id:3,标题:'Dolor private:false,喜欢:[id:06,用户名:'brad'},{id:07,用户名:'cameron'},{id:08,用户名:'liam'}]},
result=data.filter(({likes})=>likes.some({username}=>username==mike');
控制台日志(结果)代码>
。作为控制台包装{max height:100%!重要;top:0;}
使用过滤器和一些函数:
const输入=[{
id:1,
标题:“洛伦”,
二等兵:错,
喜欢:[{
id:1,
用户名:“迈克”
}, {
id:2,
用户名:“john”
}]
},
{
id:2,
标题:“Ipsum”,
二等兵:是的,
喜欢:[{
id:3,
用户名:“史蒂夫”
},
{
id:4,
用户名:“迈克”
},
{
id:5,
用户名:“sara”
}
]
},
{
id:3,
标题:“多洛”,
二等兵:错,
喜欢:[{
id:6,
用户名:“brad”
},
{
id:7,
用户名:“cameron”
},
{
id:8,
用户名:“liam”
}
]
}
];
常量标准={
用户名:“迈克”
};
const result=input.filter(x=>
x、 likes.some(y=>y.username===criteria.username)
);
控制台日志(结果)代码>您可以使用“映射”功能过滤内部数组
const data = [
{
id: 1,
title: 'Lorem',
private: false,
likes: [
{ id: 1, username: 'mike' },
{ id: 2, username: 'john' }
]
},
{
id: 2,
title: 'Ipsum',
private: true,
likes: [
{ id: 3, username: 'steve' },
{ id: 4, username: 'mike' },
{ id: 5, username: 'sara' }
]
},
{
id: 3,
title: 'Dolor',
private: false,
likes: [
{ id: 6, username: 'brad' },
{ id: 7, username: 'cameron' },
{ id: 8, username: 'liam' }
]
}
]
const res = data.map( item => {
let likes = item.likes.filter( user => user.username === 'mike')
if(likes.length > 0 ) {
item.likes = likes
return item
}
return null
}).filter(item => item !== null )
console.log(res)
在likes中使用过滤器
和查找
const filter=(数据、名称)=>
data.filter(({likes})=>likes.find({username}=>username==name));
常数数据=[
{
id:1,
标题:“洛伦”,
二等兵:错,
喜欢:[
{id:01,用户名:“mike”},
{id:02,用户名:“john”},
],
},
{
id:2,
标题:“Ipsum”,
二等兵:是的,
喜欢:[
{id:03,用户名:“steve”},
{id:04,用户名:“mike”},
{id:05,用户名:“sara”},
],
},
{
id:3,
标题:“多洛”,
二等兵:错,
喜欢:[
{id:06,用户名:“brad”},
{id:07,用户名:“cameron”},
{id:08,用户名:“liam”},
],
},
];
日志(过滤器(数据,“mike”);
日志(过滤器(数据,“废话”)代码>