반응형

 

2가지 배열이 있을 때, 그 배열이 동일한 배열인지 아닌지를 판단할 경우가 많다.

그래서 javascript의 splice 함수를 이용해서 두 배열이 동일한 배열인지 아닌지 판단하는 함수를 만들었다.

 

배열 비교 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function compareArray(arr1, arr2) {
 
    // 결과값
    var rst = false;
 
    // 길이가 다르면 다른 배열이라고 판단
    if (arr1.length != arr2.length) {
        return rst;
    }
 
    // arr1 배열의 크기만큼 반복
    arr1.forEach(function (item) {
 
        // arr1 배열 아이템이, arr2 배열에 있는지 확인
        // 있으면, arr2에 item이 존재하는 index 리턴
        // 없으면, -1 리턴
        var i = arr2.indexOf(item);
 
        // 존재하면, splice함수를 이용해서 arr2 배열에서 item 삭제
        if (i > -1) arr2.splice(i, 1);
    });
 
    // compare2의 길이가 0이면 동일하다고 판단.
    rst = arr2.length == 0;
 
    return rst;
}
cs

 

간단한 함수이다.

두배열이 동일하면 true, 동일하지 않으면 false를 리턴해준다.

 

호출 결과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Case 1. 크기가 서로 다를때 (compare1 > compare2)
var compare1 = [12345678];
var compare2 = [1234567];
console.log("Case 1 : " + compareArray(compare1, compare2));
 
// Case 2. 크기가 서로 다를때 (compare1 < compare2)
compare1 = [12345678];
compare2 = [123456789];
console.log("Case 2 : " + compareArray(compare1, compare2));
 
// Case 3. 결과가 같을때
compare1 = [12345678];
compare2 = [12345678];
console.log("Case 3 : " + compareArray(compare1, compare2));
 
// Case 4. 크기는 같지만 내용이 다를때
compare1 = [12345678];
compare2 = [12445678];
console.log("Case 4 : " + compareArray(compare1, compare2));
cs

 

여러가지 경우를 만들었다.

크기가 서로 다를 때, 크기는 같지만 내용이 다를 때, 동일한 배열일 때.

 

결과는 정상적으로 두배열이 동일한지 아닌지 확인할 수 있었다.

 

반응형

+ Recent posts