在嵌套的对象数组中查找数组

我想在嵌套的对象数组中找到一个数组,我该怎么做?


这是我的数组


const arr = [

    {

        "teamA": [

            {

                "_id": "5fcb57c5a1a426c03bcfd25f",

                "level": 10,

                "username": "asaf"

            }

        ],

        "teamB": [],

        "options": {}

    },

    {

        "teamA": [

            {

                "_id": "a7fgy3h1uio",

                "level": 10,

                "username": "asaf"

            }

        ],

        "teamB": [

            {

                "_id": "13rfedsc32",

                "level": 10,

                "username": "asaf"

            },

            {

                "_id": "dghg453r3q",

                "level": 10,

                "username": "asaf"

            }

        ],

        "options": {}

    }

];

现在我想创建一个函数,通过 _id 返回玩家所在团队的数组


例如,我创建了这个:


const findTeam = playerId => {

    const match = arr.find(({ teamA, teamB }) => [teamA, teamB].some(team => team.some(i => i._id == playerId)));

    if(!match) return;


    const { teamA, teamB } = match;

    const team = [teamA, teamB].find(team => team.some(i => i._id == playerId));

    return team;

};

它正在工作,但是我这样做的方式看起来很混乱,有什么巧妙的方法可以做到这一点吗?谢谢!


牛魔王的故事
浏览 69回答 1
1回答

富国沪深

您可以使用flatMap:const arr = [{teamA:[{_id:"5fcb57c5a1a426c03bcfd25f",level:10,username:"asaf"}],teamB:[],options:{}},{teamA:[{_id:"a7fgy3h1uio",level:10,username:"asaf"}],teamB:[{_id:"13rfedsc32",level:10,username:"asaf"},{_id:"dghg453r3q",level:10,username:"asaf"}],options:{}}];const findTeam = playerId => arr.flatMap(({ teamA, teamB }) => [teamA, teamB])                                .find(team => team.some(player => player._id === playerId));console.log(findTeam('13rfedsc32'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript