Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열에서 중복 단어 찾는 방법


문자열을 인수로 받아, 원본 문자열에서 두 번 이상 등장한 단어만으로 구성된 새로운 문자열을 반환하는 JavaScript 함수를 작성해야 합니다.

예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.

const str = "big black bug bit a big black dog on his big black nose";

이 경우 기대하는 출력 결과는 다음과 같습니다.

const output = "big black";

'big'은 3번, 'black'도 3번 등장했기 때문에 결과에 포함되고, 한 번씩만 등장한 나머지 단어들은 모두 제외됩니다.

구현 예제

이제 해당 기능을 수행하는 함수의 코드를 작성해 보겠습니다.

const str = "big black bug bit a big black dog on his big black nose";
const findDuplicateWords = str => {
   const strArr = str.split(" ");
   const res = [];
   for(let i = 0; i < strArr.length; i++){
      if(strArr.indexOf(strArr[i]) !== strArr.lastIndexOf(strArr[i])){
         if(!res.includes(strArr[i])){
            res.push(strArr[i]);
         };
      };
   };
   return res.join(" ");
};
console.log(findDuplicateWords(str));

코드 동작 원리

위 코드가 어떤 방식으로 작동하는지 단계별로 살펴보겠습니다.

1단계 — 문자열 분리: split(" ") 메서드를 사용해 입력 문자열을 공백을 기준으로 분리하고, 각 단어를 요소로 갖는 배열을 생성합니다.

2단계 — 중복 여부 확인: 각 단어에 대해 indexOf()와 lastIndexOf()의 반환값을 비교합니다. 두 값이 서로 다르다면 해당 단어가 배열 안에서 여러 위치에 존재한다는 의미, 즉 중복 단어임을 알 수 있습니다.

3단계 — 결과 배열 관리: includes() 메서드로 결과 배열에 이미 저장된 단어인지 검사하여, 동일한 단어가 여러 번 추가되는 것을 방지합니다.

4단계 — 최종 문자열 반환: join(" ") 메서드를 사용해 결과 배열의 단어들을 공백으로 연결한 하나의 문자열로 만들어 반환합니다.

출력 결과

코드를 실행하면 콘솔에 다음과 같은 결과가 표시됩니다.

big black