Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 배열 교차 찾기 및 반복 요소 포함

<시간/>

문제

첫 번째와 두 번째 인수로 각각 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]