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

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

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

牛魔王的故事 2023-10-14 17:04:04
我想在嵌套的对象数组中找到一个数组,我该怎么做?这是我的数组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;};它正在工作,但是我这样做的方式看起来很混乱,有什么巧妙的方法可以做到这一点吗?谢谢!
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以使用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'));



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

添加回答

举报

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