다음과 같은 숫자 배열이 있다고 가정해 보겠습니다. -
const arr = [1, 6, 3, 1, 3, 1, 6, 3];
이러한 배열을 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수를 작성해야 합니다. 그런 다음 함수는 배열에서 홀수번(한 번만 제외)으로 나타나는 모든 숫자를 찾아야 합니다.
예:
위의 배열에서 숫자 1과 3은 모두 3번(홀수) 나타나므로 우리의 함수는 이 두 숫자의 세 번째 발생을 제거해야 합니다.
그리고 출력 배열은 다음과 같아야 합니다 -
const output = [1, 6, 3, 1, 3, 6];
각 숫자의 발생을 추적하기 위해 해시맵을 준비하고 마지막으로 홀수 번 나타나는 해당 숫자의 마지막 발생을 삭제하기 위해 맵을 반복합니다.
지도의 각 키는 배열 값을 보유하며, 첫 번째 요소는 해당 요소가 나타난 횟수이고 두 번째는 해당 요소가 나타난 마지막 인덱스입니다.
예시
이에 대한 코드는 -
const arr = [1, 6, 3, 1, 3, 1, 6, 3]; const removeOddOccurence = (arr =[]) => { // keeping the original array unaltered const copy = arr.slice(); const map = {}; arr.forEach((num, ind) => { if(map.hasOwnProperty(num)){ map[num][0]++; map[num][1] = ind; }else{ map[num] = [1, ind]; }; }); for(const key in map){ const [freq, index] = map[key]; if(freq !== 1 && freq % 2 === 1){ copy.splice(index, 1, ''); }; }; return copy.filter(el => el !== ''); }; console.log(removeOddOccurence(arr));
출력
콘솔의 출력은 -
[1, 6, 3, 1, 3, 6]