자바스크립트

checkio. nonUniqueElements

양상추상츄 2022. 6. 4. 11:11
nonUniqueElements([1, 2, 3, 1, 3]) == [1, 3, 1, 3]
nonUniqueElements([1, 2, 3, 4, 5]) == []
nonUniqueElements([5, 5, 5, 5, 5]) == [5, 5, 5, 5, 5]
nonUniqueElements([10, 9, 10, 10, 9, 8]) == [10, 9, 10, 10, 9]
nonUniqueElements([2]) == []
nonUniqueElements([10,20,30,10])


function nonUniqueElements(data) {
    
    // 중복값이 없는 경우
    const set = new Set(data); // Set은 중복을 허용하지 않음
    if(data.length == set.size) {
        // arr.length 실제길이 == set.size 중복을 없앤값
        // 두개의 값이 같다면 중복값이 없다는것
        if(data.length == 1) { return [] }
        return []
    }

    // 값을 하나씩 넘기고 그 값과 같은 값이 있으면 
    // 값을 overlap에 담고 overlap의 길이가 1인 값을 지워라

    let numList = []
    for(let i=0; i < data.length; i++) {
        let overlap = []
        for(let j=0; j < data.length; j++) {
            if(data[i] == data[j]) {
                overlap.push(data[j])
            }
        }
        if( overlap.length == 1 ) { numList.push(data[i]) }
    }

    for(let i=0; i < numList.length; i++) {
        let index = data.indexOf(numList[i])
        data.splice(index,1)
    }

    console.log(data)
    return data
}

코드가 길다 ㅎㅎ;;

중간에 하다가 안되서 어떻게든 성공시키는데 초점을 두자하며 코드를 완성시켰다.

 

참고

* 배열의 값 중복 체크하는 방법 3가지

 

[Javascript] 배열 값 중복 체크하는 3가지 방법

배열 안의 element가 중복되는 값을 가지는지 체크하는 3가지 방법을 소개합니다. 배열 값 중복 체크하는 3가지 방법 1. 반복문 이용하기 2. Set 객체 이용하기 3. some(), indexOf(), lastIndexOf() 함수 이

hianna.tistory.com

* 배열 중간값 삭제하기

 

[Javascript] 배열 중간에 값 추가, 삭제하기 (2) - splice() 함수

지난 번에는 unshift(), shift(), push(), pop() 함수를 사용하여, 배열의 맨 앞과 뒤의 원소를 추가, 삭제하는 방법을 알아보았습니다. [Javascript] 배열에 값 추가, 삭제하기 (앞, 뒤) (1) 이번에는 splice()..

hianna.tistory.com