Javascript

배열의 중복값 제거

불타는 코딩🔥 2019. 4. 25. 19:24

배열/객체 중 객체안의 속성을 기준으로 중복값

    var arrayDummy = [
        {"unum": "0000001", "uname":"choi", "ugender":"man"},
        {"unum": "0000002", "uname":"bae", "ugender":"woman"},
        {"unum": "0000003", "uname":"kim", "ugender":"man"},
        {"unum": "0000001", "uname":"pack", "ugender":"woman"},
        {"unum": "0000002", "uname":"heo", "ugender":"woman"},
        {"unum": "0000003", "uname":"nana", "ugender":"man"}
    ]
    
    function uniqueArrayFilter(_array){
        //새로운 배열 uniqueArray 생성
        var uniqueArray = [];
        var i, j, flag;
        
        for( i = 0; i < _array.length; i++){
            // uniqueArray 의 길이가 0 이면 추가. 초기값
            if( uniqueArray.length === 0){
                uniqueArray.push(_array[i]);
            }else{
                // uniqueArray 의 길이가 1 이상이면 검토시작
                
                flag = true;
                for( j = 0; j < uniqueArray.length; j++){
                    // unum 이 같으면 flag 를 false 처리하고 해당 loop 종료
                    // unum 이 다르면 패스하고 flag는 true 지속함
                    if( uniqueArray[j].unum === _array[i].unum){
                        flag = false;
                        break;
                    }
                }
                
                // loop 에서 걸러지고 flag 값이 true 이므로 
                // 중복되지않는 unum이 해당하는 행은 uniqueArray에 추가된다. 
                if(flag){
                   uniqueArray.push(_array[i]) 
                }
            }
        }
        return uniqueArray;
    }
    
    uniqueArrayFilter(arrayDummy);
    
    /*
    결과값
    [
      {"unum": "0000001", "uname":"choi", "ugender":"man"},
      {"unum": "0000002", "uname":"bae", "ugender":"woman"},
      {"unum": "0000003", "uname":"kim", "ugender":"man"}
    ]
    */