[JavaScript] 중복 제거 함수

1. 단일 배열 중복 제거 (Single Array)

// 단일 오브젝트 배열 중복 제거
function getUniqueSnglObjectArray(arr, key) {
    var resultArr = [];
    
    for (var i = 0; i < arr.length; i++) {
        if (resultArr.length == 0) {
            resultArr.push(arr[i]);
        } else {
            var duplicatesFlag = true;
            for (var j = 0; j < resultArr.length; j++) {
                if (resultArr[j][key] == arr[i][key]) {
                    duplicatesFlag = false;
                    break;
                }
            }
            if (duplicatesFlag) {
                resultArr.push(arr[i]);
            }
        }
    }
    
    return resultArr;
}

 

2. 다중 배열 중복 제거 (Array to Array)

/**
 * 중복 제거 함수
 * @param array1 : 비교 배열1
 * @param array2 : 메인 배열2
 * @param key1 : 비교 key1
 * @param key2 : 메인 key2
 * @return : resultData(결과값), duplData(중복값)
 */ 
function getUniqueObjectArray(array1, array2, key1, key2){
   
   // 임시 배열
   var tempArray = new Array();
   var tempDuplArray = new Array();
   
   // 결과 배열
   var resultArray = new Array();
   var duplArray = new Array();
   
   var result = new Object();
   
   for(var i=0; i<array1.length; i++){
         tempArray.push(array1[i]);
   }
   
   for(var k=0; k<tempArray.length; k++){
      if(array2.length>0){
         for(var j=0; j<array2.length; j++){ 
            if(tempArray[k] && tempArray[k][key1] == array2[j][key2]){
               
               // 중복 제거값
               tempArray.splice(k, 1);
               
               // 중복값 세팅
               tempDuplArray.push(array2[j]);

               k--;
            }
         }
         
         duplArray = tempDuplArray;
         
         // 최종 결과값 할당
         resultArray = tempArray;
      } else {
         if(tempArray.length>0){
            resultArray.push(tempArray[k])
         }
      }
   }
   
   result = {
         resultData : resultArray
         , duplData : duplArray
   }
   
   return result;
}