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

标签 javascript arrays nested

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

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;
};
它正在工作,但是我这样做的方式看起来很困惑,有什么巧妙的方法可以做到这一点?
谢谢!

最佳答案

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

解释:arr.flatMap(({ teamA, teamB }) => [teamA, teamB])将返回所有比赛中所有球队的数组,无论它们是 AB .然后,您可以轻松找到包含所需播放器的那个。

关于javascript - 在嵌套的对象数组中查找数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65168615/

相关文章:

php - 在 HTML 表格中显示嵌套数组

javascript - 如何将选定的时间值转换为正确的时间?

c - 如何找到数组的大小(从指向第一个元素数组的指针)?

java - 如何将文件输入拆分为2个不同的数组java

Laravel 嵌套作业

在 C 中创建嵌套结构的动态自定义数组

javascript - 如何检查 JQuery 中是否存在某个元素?

javascript - 使用 jquery 表情符号插件时,componentDidMount 的行为与 useEffect 不同

javascript - 如果上传字段有文件,请执行某些操作

c++ - 为什么堆栈中没有可变大小的数组?