문제
첫 번째와 두 번째 인수로 각각 arr1과 arr2라는 두 개의 배열을 취하는 JavaScript 함수를 작성해야 합니다.
함수는 배열의 교차점(둘 사이의 공통 요소)을 찾아야 하며 두 배열에 두 번 나타나는 요소가 있는 경우 결과 배열에도 두 번 포함해야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우const arr1 = [2, 7, 4, 6, 7, 4]; const arr2 = [7, 1, 9, 7, 4, 5];
그러면 출력은 다음과 같아야 합니다. -
const output= [7, 7, 4];
예시
이에 대한 코드는 -
const arr1 = [2, 7, 4, 6, 7, 4]; const arr2 = [7, 1, 9, 7, 4, 5]; const intersect = (arr1 = [], arr2 = []) => { const map = {}; arr1.forEach(a => { map[a] = map[a] ? map[a] + 1 : 1; }) const result = []; for(let key of arr2) { if(key in map && map[key] > 0) { result.push(key); map[key]--; } } return result; }; console.log(intersect(arr1, arr2));
코드 설명:
우리가 취한 단계는 -
-
첫 번째 배열(arr1)을 반복하여 각 번호의 발생을 찾습니다. 그 안에.
-
두 번째 배열(arr12)을 반복하여 arr2의 요소가 매핑된 arr1에 존재하는지 확인합니다.
-
존재하는 경우 매핑된 num1의 값을 줄이고 결과 배열의 요소를 푸시합니다.
출력
콘솔의 출력은 -
[7, 7, 4]