score:1

you should be able to use something similar to your category method:

items = tempitems.filter(({ node }) =>
  node.tag.map(tag => tag.title).includes("tag2")
);

since this isn't necessarily react / gatsby specific, here is only the data and these methods:

const data = {
  data: {
    menu: {
      edges: [{
          node: {
            title: "articlename 1",
            slug: "articlename-1",
            category: {
              title: "cat1"
            },
            tag: [{
                title: "tag1"
              },
              {
                title: "tag2"
              },
              {
                title: "tag3"
              }
            ]
          }
        },
        {
          node: {
            title: "articlename 2",
            slug: "articlename-2",
            category: {
              title: "cat2"
            },
            tag: [{
              title: "tag3"
            }]
          }
        }
      ]
    }
  }
};

let items = data.data.menu.edges.filter(
  ({
    node
  }) => node.category.title === "cat2"
);

console.log(items);

items = data.data.menu.edges.filter(({
    node
  }) =>
  node.tag.map(tag => tag.title).includes("tag2")
);

console.log(items);


Related Query

More Query from same tag