how to filtering javascript array of objects

前端 未结 3 1529
生来不讨喜
生来不讨喜 2021-01-29 10:34

I have got two arrays . I am filtering based groupKey with PubSidebar.

3条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-29 10:52

    apply filter on array items and on content of each item.

    const update = (data, keys) => {
      const publicOrGroup = ({ role, value }) =>
        role === "public" || keys.includes(value);
    
      return data.filter(publicOrGroup).map(({ content = [], ...item }) => ({
        ...item,
        content: content.filter(publicOrGroup)
      }));
    };
    
    const groupKey = ["oaDeal", "Journals", "Deposit"];
    const PubSidebar = [
      {
        value: "Dashboard",
        role: "public"
      },
      {
        value: "oaDeal",
        role: "private",
        content: [
          {
            role: "private",
            value: "oaDeal"
          }
        ]
      },
      {
        value: "Journals",
        role: "public",
        content: [
          {
            role: "private",
            value: "Journals"
          },
          {
            role: "private",
            value: "Token"
          },
          {
            role: "private",
            value: "policy"
          },
          {
            role: "private",
            value: "Deposit"
          },
          {
            role: "public",
            value: "test"
          }
        ]
      }
    ];
    
    console.log(update(PubSidebar, groupKey));

提交回复
热议问题