如何解决如何通过嵌套在对象数组的属性中的对象属性的值在对象数组中查找多个索引?
我有一个对象数组,每个对象都有一个“监视”属性,它本身就是一个对象数组。
let arr =
[
{
id: 1,name: "A",watched: [
{movieId: 7,movieName: "Avatar"},
{movieId: 8,movieName: "Titanic"}
]
},{
id: 2,name: "B",watched: [
{movieId: 1,movieName: "Armageddon"},{
id: 3,name: "C",
{movieId: 7,movieName: "Avatar"}
]
}
]
我需要根据给定的MovieId组成一个索引数组。 如果我想要一个看了movieId no的索引数组。 7(Avatar)- 我会得到:
让AvatarWatchers = [0,2]
我尝试过:
AvatarWatchers = arr.filter((item) => item.watched.find(movieObj => movieObj.movieId == 7) > -1 )
但是它不起作用,并且我得到一个空数组。
解决方法
let arr =
[
{
id: 1,name: "A",watched: [
{movieId: 7,movieName: "Avatar"},{movieId: 8,movieName: "Titanic"}
]
},{
id: 2,name: "B",watched: [
{movieId: 1,movieName: "Armageddon"},{
id: 3,name: "C",{movieId: 7,movieName: "Avatar"}
]
}
];
let result = arr.map((item,index) => ({...item,index}))
.filter(item => item.watched.find(watchedItem => watchedItem.movieName === 'Avatar'))
.map(item => item.index);
console.log('expected result',result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。