Javascript의 배열에서 중복을 제거하는 3가지 방법



배열에 주어진 중복 요소를 제거해야 할 필요성이 여러 번(또는 거의) 발생합니다. 잘 모르겠습니다... 수퍼에서 목록을 인쇄하고 자신의 레코드를 복제한 학생을 제거해야 하기 때문일 수 있습니다. 하나의 형태로, 무한히 많으므로 이를 수행하는 몇 가지 방법을 살펴보겠습니다.

1) 세트 사용



Set()을 사용하면 고유한 값의 인스턴스가 생성되고 암시적으로 이 인스턴스를 사용하면 중복 항목이 삭제됩니다.

따라서 이 인스턴스를 사용할 수 있고 거기에서 해당 인스턴스를 새 배열로 변환해야 합니다.

let chars = ['A', 'B', 'A', 'C', 'B'];
let uniqueChars = [...new Set(chars)];

console.log(uniqueChars);


산출:

['A', 'B', 'C']


2) indexOf() 및 filter() 메서드 사용



indexOf() 메서드는 배열에서 요소가 처음 나타나는 인덱스를 반환합니다.

let chars = ['A', 'B', 'A', 'C', 'B'];
chars.indexOf('B');


산출:

1


중복 요소는 인덱스가 indexOf() 값과 다른 요소입니다.

let chars = ['A', 'B', 'A', 'C', 'B'];

chars.forEach((element, index) => {
    console.log(`${element} - ${index} - ${chars.indexOf(element)}`);
});


산출:

A - 0 - 0
B - 1 - 1
A - 2 - 0
C - 3 - 3
B - 4 - 1


중복을 제거하기 위해 filter() 메서드는 인덱스가 indexOf 값과 일치하는 요소만 포함하는 데 사용됩니다. filer 메서드가 수행된 작업을 기반으로 새 배열을 반환한다는 것을 알고 있기 때문입니다.

let chars = ['A', 'B', 'A', 'C', 'B'];

let uniqueChars = chars.filter((element, index) => {
    return chars.indexOf(element) === index;
});

console.log(uniqueChars);


산출:

['A', 'B', 'C']


그리고 우연히 복제본이 필요한 경우 규칙을 변경하여 함수를 약간 수정할 수 있습니다.

let chars = ['A', 'B', 'A', 'C', 'B'];

let dupChars = chars.filter((element, index) => {
    return chars.indexOf(element) !== index;
});

console.log(dupChars);


산출:

['A', 'B']


3) includes() 및 forEach() 메서드 사용



include() 함수는 요소가 배열에 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

다음 예제에서는 배열의 요소를 반복하고 아직 없는 요소만 새 배열에 추가합니다.

let chars = ['A', 'B', 'A', 'C', 'B'];

let uniqueChars = [];
chars.forEach((element) => {
    if (!uniqueChars.includes(element)) {
        uniqueChars.push(element);
    }
});

console.log(uniqueChars);


산출:

['A', 'B', 'C']  


기본적으로 이러한 유형의 문제를 해결할 수 있는 옵션이 있으므로 더 이상 막히지 말고 마음에 드는 것을 사용할 수 있습니다.


콘텐츠가 마음에 들면 다음과 같이 내 소셜 네트워크에서 나를 팔로우할 수 있습니다.




좋은 웹페이지 즐겨찾기