如何通过嵌套在对象数组属性中的对象属性的值在对象数组中查找多个索引?

我有一个对象数组,每个对象都有一个“被监视”的属性,它本身就是一个对象数组。


let arr = 

        [ 

            {   

                id: 1, 

                name: "A", 

                watched: [ 

                            {movieId: 7, movieName: "Avatar"} , 

                            {movieId: 8, movieName: "Titanic"}

                        ]

            },

            {   

                id: 2, 

                name: "B", 

                watched: [   

                            {movieId: 1, movieName: "Armageddon"} , 

                            {movieId: 8, movieName: "Titanic"}

                        ]

            },

            {   

                id: 3, 

                name: "C", 

                watched: [   

                            {movieId: 1, movieName: "Armageddon"} , 

                            {movieId: 7, movieName: "Avatar"}

                        ]

            }


        ]

根据给定的 MovieId,我需要一组索引。如果我想要一个索引数组谁看过 movieId 没有。7 (Avatar) - 我会得到:


让 AvatarWatchers = [0,2]


我试过:


AvatarWatchers = arr.filter((item) => item.watched.find(movieObj => movieObj.movieId == 7) > -1 )

但它不起作用,我得到一个空数组。


泛舟湖上清波郎朗
浏览 121回答 1
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"} ,                             {movieId: 8, movieName: "Titanic"}                        ]            },            {                   id: 3,                 name: "C",                 watched: [                               {movieId: 1, movieName: "Armageddon"} ,                             {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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript