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

JavaScript 배열에서 중복 문자가 없는 첫 번째 문자열 찾는 방법

문자열 배열을 다룰 때, 각 문자열에 중복된 문자가 포함되어 있는 경우가 있습니다. 예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.

const arr = ['54gdgdfe3', '434ffd', '43frdf', '43fdhnh', 'wgcxhjny', 'fsdf34'];

이번 글에서는 이러한 배열을 입력으로 받아, 중복 문자가 하나도 없는(모든 문자가 고유한) 첫 번째 요소를 반환하는 JavaScript 함수를 작성해 보겠습니다. 만약 조건을 만족하는 문자열이 존재하지 않는다면 false를 반환해야 합니다.

해결 접근 방식

핵심 아이디어는 다음과 같습니다.

1. 문자열을 개별 문자로 분리합니다.
2. 각 문자에 대해 indexOf()lastIndexOf()의 결과가 동일한지 확인합니다. 두 값이 같다면 해당 문자는 문자열 내에서 한 번만 등장한다는 의미입니다.
3. 모든 문자가 이 조건을 통과하면 해당 문자열은 중복이 없는 것입니다.

예제 코드

const arr = ['54gdgdfe3', '434ffd', '43frdf', '43fdhnh', 'wgcxhjny', 'fsdf34'];

// 문자열에 중복 문자가 있는지 검사하는 함수
const isUnique = str => {
    return str.split('').every(el => str.indexOf(el) === str.lastIndexOf(el));
};

// 배열에서 중복 없는 첫 번째 문자열을 찾는 함수
const findUniqueString = arr => {
    for(let i = 0; i < arr.length; i++){
        if(isUnique(arr[i])){
            return arr[i];
        }
    }
    return false;
};

console.log(findUniqueString(arr));

코드 설명

isUnique 함수는 split('')으로 문자열을 문자 단위 배열로 변환한 뒤, every() 메서드를 사용해 모든 문자가 고유한지 검사합니다. indexOf(el)은 해당 문자가 처음 등장하는 위치를, lastIndexOf(el)은 마지막으로 등장하는 위치를 반환하므로, 두 값이 일치하면 그 문자는 한 번만 나타난다는 뜻입니다.

findUniqueString 함수는 배열을 순회하면서 각 요소에 대해 isUnique를 호출하고, 조건을 만족하는 첫 번째 문자열을 즉시 반환합니다. 끝까지 조건을 만족하는 요소가 없다면 false를 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

wgcxhjny

배열의 앞부분에 있는 '54gdgdfe3', '434ffd', '43frdf', '43fdhnh'는 모두 중복 문자를 포함하고 있지만, 'wgcxhjny'는 모든 문자가 고유하므로 첫 번째 결과로 반환됩니다.