문제
첫 번째와 두 번째 인수로 두 개의 리터럴 배열인 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']