Contains either test

Learn how to check if a collection contains one or more elements.

This test checks whether one collection contains at least one of the elements of another. It is the opposite of the contains neither test.

This operation corresponds to the mathematical concepts of intersection and disjoint sets. Specifically, it checks whether the intersection of the collection 𝐴 and 𝐵 is not empty (𝐴 ∩ 𝐵 ≠ ∅) or, conversely, whether 𝐴 and 𝐵 are not disjoint (𝐴 ∩ 𝐵 ≠ ∅).

Note that the result is always false if the second collection is empty because the empty set is disjoint from every set.

Also, keep in mind that neither the order nor duplicate elements affect the result since collections are treated as sets.

Syntax

This test has the following syntax:

/*<collection>*/ contains either /*<collection>*/
Try in Playground

Alternatively, you can use the following syntax:

/*<collection>*/ includes either /*<collection>*/
Try in Playground

Both forms have the same semantics. You can use whichever makes your query more expressive and easier to read.

You can negate the test to verify the contrary:

/*<collection>*/ does not contain either /*<collection>*/
Try in Playground

The same applies to the alternative syntax:

/*<collection>*/ does not include either /*<collection>*/
Try in Playground

However, consider using the contains neither test instead of negating, as it is more expressive and easier to understand.

Parameters

These are the supported parameters:

collection

The collection to check.

subset

The collection whose elements must be contained in the other collection.

Examples

Here is an example of a collection that contains at least one of the elements of another collection:

["a", "b", "c"] contains either ["a", "d", "e"] // true
Try in Playground

And here is a counterexample:

["a", "b", "c"] contains either ["d", "e", "f"] // false
Try in Playground

To negate the test, you can write:

["a", "b", "c"] does not contain either ["a", "d", "e"] // false
Try in Playground

If the second collection is empty, the result is always false:

["a", "b", "c"] contains either [] // false
Try in Playground