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

JavaScript의 배열에서 임의의 숫자/요소의 홀수 발생 제거

<시간/>

다음과 같은 숫자 배열이 있다고 가정해 보겠습니다. -

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]