Если вы заботитесь только об элементе с индексом 0, то вы можете отфильтровать с помощью some
и проверить идентификатор некоторого элемента в array2
его первое значение равно первому значению текущего элемента, являющегося фильтрами:
var array1 = [["501", 1800, "floorsRegion1", 0], ["502", 1800, "floorsRegion1", 0], ["503", 1800, "floorsRegion1", 0]];
var array2 = [["501", 1800, "floorsRegion1", 0]];
let filtered = array1.filter(arr => array2.some(arr2 => arr2[0] == arr[0]))
console.log(filtered)
// with two items in array2:
array1 = [["501", 1800, "floorsRegion1", 0], ["502", 1800, "floorsRegion1", 0], ["503", 1800, "floorsRegion1", 0]];
array2 = [["501", 1800, "floorsRegion1", 0], ["503", 1800, "floorsRegion1", 0]];
filtered = array1.filter(arr => array2.some(arr2 => arr2[0] == arr[0]))
console.log(filtered)
Это не очень эффективно, потому что он выглядит как array2 для каждого элемента в array1.Если бы массивы были большими, то стоило бы сделать поиск с помощью объекта или набора, который позволяет быстрее искать.Что-то вроде:
var array1 = [["501", 1800, "floorsRegion1", 0], ["502", 1800, "floorsRegion1", 0], ["503", 1800, "floorsRegion1", 0]];
var array2 = [["501", 1800, "floorsRegion1", 0], ["503", 1800, "floorsRegion1", 0]];
let known = new Set(array2.map(item => item[0]))
let filtered = array1.filter(arr => known.has(arr[0]))
console.log(filtered)