4

If I have an array const a = [1, 2] and a nested array const nested = [[1,2], [2,3]]

How do I check if array a is in the nested?

I tried using the nested.includes(a), but it doesn't provide the correct output. And I was thinking stringify the array a, but read some comments about we should not compare array using stringify.

So what is a proper way to check if an array is in another array?

2
  • Well, strictly speaking two different arrays are different and not equal. You'll have to come up with your own criteria for how to perform the comparisons based on array content. For example, does order matter? It might, or it might not. Commented Aug 11, 2021 at 19:24
  • Does this answer your question? How to check if an array contains another array? Commented Nov 17, 2022 at 8:06

3 Answers 3

2

includes doesn't work correctly as it compares references - a and nested[0] are different in terms of references.

Take a look at following function:

function includesDeep(array, value) {
  return array.some((subArray) => {
    return subArray.every(
      (subArrayElem, index) => subArrayElem === value[index]
    );
  });
}

We have to iterate over all elements of given array and check if every element of this sub array is identical to corresponding element from second array (your a). This method detects type mismatches.

Sign up to request clarification or add additional context in comments.

Comments

1

You can stringify the arrays to compare whether they are equal in the callback of Array.some :

const a = [1, 2]
const nested = [[1,2], [2,3]]
const containsA = nested.some(e => JSON.stringify(e) == JSON.stringify(a))
console.log(containsA);

1 Comment

One problem. Try this: const a = ['1', 2]. It will pass as toString doesn't mark strings.
-1

if you must compare it without stringification, prepend a unique id to the values and compare that.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.