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

geek glance
  • 111
  • 2
  • 9

3 Answers3

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);
Unmitigated
  • 76,500
  • 11
  • 62
  • 80
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)))
  • If I want to delete that item how can i? – geek glance May 24 '21 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]));` – Murali krishna Gundoji May 25 '21 at 04: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

joshua miller
  • 1,686
  • 1
  • 13
  • 22
  • 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) – joshua miller May 24 '21 at 17:14