过滤数组,如果它有一个特定的键值对

Filter array if it has a specific key value pair

在 Vue-JS 中,我正在使用 computed 属性 并希望根据键值对过滤数组,这是我的数组包含对象(在 data() {} 中):

menu_content: [
  {
    title: "Dashboard",
    icon: "dashboard",
    group: false,
  },
  {
    title: "User",
    icon: "account_circle",
    group: true,
    sub_menu_items: [
      {
        title: "Edit",
        sub_group: true,
        sub_group_items: [
          {
            title: "Admin",
            icon: "verified_user",
          },
        ],
      },
    ]
  }
]

在这个数组中我有 group 属性 可以是 falsetrue, 所以我写了一些代码来根据这个 [= =27=]key-value 对(在 computed: {} 中):

haveSubGroup() {
  this.menu_content.forEach(item => {
    if (item.group)
      return item.sub_menu_items.filter(sub_item => sub_item.sub_group == true);
  });
}

如果我 console.log() 上面的 return 语句,它会给我一个 observable,如果我在 [=] 中使用 {{ haveSubGroup }} 20=] 我什么都没看到!

试试这个:

haveSubGroup() {
  this.menu_content.forEach(item => {
    return item.group && item.sub_menu_items.some(sub_item => sub_item.sub_group);
  });
}

您知道在 forEach 循环中使用 return 语句会打破循环,我为您提供了以下解决方案,希望对您有所帮助!

haveSubGroup() {
  let temp = [];
  this.menu_content.forEach(item => {
    if (item.group)
      temp.push(item.sub_menu_items.filter(sub_item => sub_item.sub_group == true));
  });
  return temp[0];
},