问题描述
我有一个对象数组,每个对象都有一个“监视”属性,它本身就是一个对象数组。
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);