Если в лоб:
const arr1 = [
[ 432432, 23423, 123123, 54364346],
[ 756456, 2423423, 645654, 23423423],
[ 12354, 123123, 23423423, 1235765]
]
const arr3 = [ 12354, 5345, 53456346 ]
const arrResult = arr1
.flat(Infinity)
.filter(el => arr3.includes(el))
console.log(arrResult)
// Array [ 12354 ]
Если оптимизировать по времени, за счёт памяти:
const arr1 = [
[ 432432, 23423, 123123, 54364346],
[ 756456, 2423423, 645654, 23423423],
[ 12354, 123123, 23423423, 1235765]
]
const arr3 = [ 12354, 5345, 53456346 ]
const arr1s = arr1.flat(Infinity)
arr1s.sort((a, b) => a - b)
const arr3s = arr3.slice()
arr3s.sort((a, b) => a - b)
const arrResult = []
for (let i = 0, let j = 0; i < arr1s.length, j < arr3s.length;) {
if (arr1s[i] === arr3s[j]) {
arrResult.push(arr1s[i])
i += 1
} else if (arr1s[i] < arr3s[j]) {
i += 1
} else {
j += 1
}
}
console.log(arrResult)
// Array [ 12354 ]
Правда, в обоих случаях надо смотреть поведение при наличии дублей в каждом из массивов.