ВБ
const findEqualElements = (arr, arr2) => {
const objForArr = arr.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //первый обход
const objForArr2 = arr2.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //второй обход
const fullObj = {}
for (key in objForArr)
if (objForArr2[key])
fullObj[key] = objForArr[key] <= objForArr2[key] ? objForArr[key] : objForArr2[key]//третий обход
const res = []
for (key in fullObj)//четвертый обход
for (let i = 0; i < fullObj[key]; i++) //это уже не обход, а создание результирующего списка в цикле =)
res.push(key)
return res // 4 обхода
}
const a = [1,2,3,1,2,3,1,2,1,2,1,2,1,2,4,3,2,1,4,2]
const b = [2,2,3,4,5,6,7,8,9]
findEqualElements(a,b) //["2", "2", "3", "4"]