1
let arr1 = [['item 1', 'item 2'],['item 3', 'item 4']] let arr2 = ['item 1', 'item 2'] 

I need to check whether arr2 exist in arr1

2

3 Answers 3

3

You can use Array#some along with Array#every.

let arr1 = [ ['item 1', 'item 2'], ['item 3', 'item 4'] ] let arr2 = ['item 1', 'item 2'] let res = arr1.some(x => x.length === arr2.length && x.every((e, i) => e === arr2[i])); console.log(res);

3
  • Thanks for the answer, now If I want to delete that item how can I?CommentedMay 24, 2021 at 17:38
  • You can use arr1.splice(arr1.findIndex(x => x.length === arr2.length && x.every((e, i) => e === arr2[i])), 1)CommentedMay 24, 2021 at 17:41
  • @geekglance No problem.CommentedMay 24, 2021 at 18:08
1

To keep it simple you can use the combination of every and some as below, it returns true if exists and false if not

arr1.some(i => i.length === arr2.length && i.every(it => arr2.includes(it))) 
2
  • If I want to delete that item how can i?CommentedMay 24, 2021 at 17:37
  • 1 . You can use findIndex and splice let res = arr1.findIndex(x => x.length === arr2.length && x.every((e, i) => e === arr2[i])); arr1.splice(0,1); 2. you can directly use filter arr1 = arr1.filter(x => x.length !== arr2.length || x.some((e, i) => e !== arr2[i]));CommentedMay 25, 2021 at 4:51
0

If you want a very quick and easy way to check, you could do:

arr1.findIndex(arr => { return JSON.stringify(arr) === JSON.stringify(arr2) }) 

Which will return the position of arr2 within arr1, or '-1' if it does not exist in arr1

1
  • Quick note: This will only work if you are trying to match the order (which you might be seeing as in JS arrays are ordered)CommentedMay 24, 2021 at 17:14

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.