I actually thought this one would require a bit of mapping, but it turns out that contains() is fully capable of handling arrays by itself. So we only need to add some other qualifiers in addition to the function call.
So try where all(contains(key, this.variable)) and see if that doesn’t meet your needs. Below is an image from my test run:
As can be seen when doing contains() on a list, it matches against the separate values. So if then require the entire result array to all() be true, we got a complete match. As variant if you want to match against any of them, you could have used any() instead. And if you wanted to check that neither of the ones in variable existed you could do none() around the entire expression.
In the last column it also shows that this works in the case of a single link in your variable.