Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is a proper way to check if an array is in a nested array? [Javascript]

Tags:

javascript

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?

like image 246
Boogie Avatar asked Sep 20 '25 00:09

Boogie


2 Answers

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.

like image 179
Aitwar Avatar answered Sep 21 '25 14:09

Aitwar


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);
like image 38
Spectric Avatar answered Sep 21 '25 12:09

Spectric