Как найти пересечение между двумя массивами JavaScript?
У нас есть два массива с уникальными наборами чисел:
let arr1 = [1,2,3,4,5,6]; let arr2 = [4,5,6,7,8,9];
В каждом массиве число встречается ровно 1 раз.
Мы хотим получить такие числа, которые есть и в первом массиве и во втором. Как это сделать?
Получение массива повторяющихся чисел из двух массивов при помощи двух циклов FOR OF в JavaScript
Мы можем написать свою функцию, которая будет принимать два параметра — два массива.
function intersect(a, b){ let new_arr = []; for(element_a of a){ for(element_b of b){ if(element_b == element_a){new_arr.push(element_a)}} } return new_arr; };
Цикл FOR OF обегает значения в свойствах объектов. В нашем случаем массивы — это объекты класса Array по стандарту ECMAScript. Именно в этой функции нас не интересует цикл FOR или FOR IN.
Мы назвали нашу функцию именем «intersect» по аналогии с названием оператора в языке SQL.
Пример работы функции по нахождению повторяющихся чисел в двух массивах
Вызываем нашу функцию:
intersect(arr1, arr2)
Результат работы функции по массивам из чисел:
Результатом вызова нашей функции стал массив из чисел (класс Number). Каждый элемент нового массива присутствует как в первом массиве, так и во втором.
Данная функция также хорошо будет работать и с массивами из строк.
let arr3 = ['1','2','3','4','5','6']; let arr4 = ['4','5','6','7','8','9'];
В каждом массиве строка встречается ровно 1 раз.
Вызываем нашу функцию:
intersect(arr3, arr4)
Результат работы функции по массивам из строк:
Информационные ссылки
Официальная страница стандарта ECMAScript — https://tc39.es/ecma262/multipage/ — https://tc39.es/ecma262/
Объекты Array — https://tc39.es/ecma262/#sec-array-objects
Цикл FOR OF — https://tc39.es/ecma262/#sec-for-in-and-for-of-statements