为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2023-05-11 14:09:31
我有一个对象数组,每个对象都有一个“被监视”的属性,它本身就是一个对象数组。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 )但它不起作用,我得到一个空数组。
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

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);


查看完整回答
反对 回复 2023-05-11
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信