如何筛选对象数组的子代,然后返回具有更新子代的父代?

时间:2019-10-21 20:33:51

标签: javascript reactjs filter

我正在尝试过滤一系列对象,这些对象是孩子,然后更新孩子,并向父母返回更新后的孩子。

对象数组示例:

[
    {
        "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"
            }
        ]
    }
]

我在React中有一个输入,有人可以输入用户名,然后我只想显示具有该名称的用户,同时保留他们所在的组。

例如,如果输入为“ Mike”,我希望结果为:

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

1 个答案:

答案 0 :(得分:2)

您可以使用map()filter()来做到这一点。

<html>
<head>
  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-1234567890-1', 'auto');
    ga('send', 'TEST');
    console.log(ga.q);
  </script>


</head>
<body>

<button onclick="ga('send', 'BUTTON PUSH')">
    PUSH ME
</button>



</body>
</html>