Как отфильтровать потомки массива объектов, а затем вернуть родителя с обновленными потомками? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь отфильтровать массив объектов, которые являются его потомками, затем обновить дочерние элементы и вернуть родителя с обновленными дочерними элементами.

Пример массива объектов:

[
    {
        "id": 1,
        "name": "group1",
        "users": [
            {
                "id": 1,
                "name": "Mike"
            },
            {
                "id": 2,
                "name": "Steve"
            },
            {
                "id": 3,
                "name": "John"
            }
        ]
    },
    {
        "id": 2,
        "name": "group2",
        "users": [
            {
                "id": 4,
                "name": "Phill"
            },
            {
                "id": 5,
                "name": "Joe"
            },
            {
                "id": 6,
                "name": "Dominik"
            }
        ]
    }
]

I 'у меня есть вход в React, где кто-то может ввести имя пользователя, тогда я хотел бы показывать только пользователей с таким именем, сохраняя группу, в которой они находятся.

Например, есливход «Майк» Я хотел бы, чтобы результат был:

[
    {
        "id": 1,
        "name": "group1",
        "users": [
            {
                "id": 1,
                "name": "Mike"
            }
        ]
    },
    {
        "id": 2,
        "name": "group2",
        "users": []
    }
]

1 Ответ

2 голосов
/ 21 октября 2019

Для этого можно использовать map () и filter () .

let arr = [ { "id": 1, "name": "group1", "users": [ { "id": 1, "name": "Mike" }, { "id": 2, "name": "Steve" }, { "id": 3, "name": "John" } ] }, { "id": 2, "name": "group2", "users": [ { "id": 4, "name": "Phill" }, { "id": 5, "name": "Joe" }, { "id": 6, "name": "Dominik" } ] } ];

function filterUsers(arr, name) {
  return arr.map(obj => {
    return {
      ...obj,
      "users": obj.users.filter(user => user.name === name)
    };
  });
}

console.log(filterUsers(arr, "Mike"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...