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

JavaScript에서 인덱스 합계가 최소인 공통 요소

<시간/>

문제

첫 번째와 두 번째 인수로 두 개의 리터럴 배열인 arr1과 arr2를 취하는 JavaScript 함수를 작성해야 합니다.

우리의 함수는 공통 요소를 찾아야 합니다. 최소 목록 인덱스섬이 있는 arr1 및 arr2 . 답변 사이에 선택 동점이 있는 경우 주문 요구 사항 없이 모든 답변을 출력해야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['d', 'a', 'c'];

그러면 출력은 다음과 같아야 합니다. -

const output = ['a'];

출력 설명

'd'와 'a'는 두 배열에서 공통이므로 'd'의 인덱스 합은 3 + 0 =3이고 'a'의 인덱스 합은 0 + 1 =1이므로 'a'가 필수 요소입니다.

예시

다음은 코드입니다 -

const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['d', 'a', 'c'];
const findCommon = (arr1 = [], arr2 = []) => {
   let sum = Infinity
   const map = arr1.reduce((acc, str, index) => {
      acc[str] = index
      return acc
   }, {})
   for (let i = 0; i < arr2.length; i++) {
      const index1 = map[arr2[i]]
      if (index1 >= 0 && index1 + i < sum) {
         sum = index1 + i
      }
   }
   const result = []
   for (let i = 0; i < arr2.length; i++) {
      const index1 = map[arr2[i]]
      if (index1 >= 0 && index1 + i === sum) {
         result.push(arr2[i])
      }
   }
   return result
}
console.log(findCommon(arr1, arr2));

출력

다음은 콘솔 출력입니다-

['a']