개발새발

[jquery]배열의 중복 데이터 존재 유무 체크 본문

Web Programming/JQuery

[jquery]배열의 중복 데이터 존재 유무 체크

재래김유진 2023. 10. 24. 14:43
728x90
반응형

여러 데이터에서 꼭 값이 중복되어야만 하는 기능을 구현해 보자.

 

예시로 체크박스 선택된 데이터들 중 서로 다른 데이터가 있으면 alert을 띄우는 기능을 만들어보려 한다.

 

여러 결제정보들의 리스트가 있고 리스트들 중
결제타입이 카드인 경우는 결제일과 승인번호가 같아야만 값이 넘어가고
아닌 경우는 alert을 띄워보자.

 

var payInfoArr = new Array();
var isDupl = false;

$('input[name=chk]').each(function(i) {
    if(this.checked){
        var idx = $('input:checkbox[name=chk]').index(this);

        var paymentType = $("input[name=paymentType]").eq(idx).val();
        var authNbr = $("input[name=authNbr]").eq(idx).val();
        var payDate = $("input[name=payDate]").eq(idx).val();

        if(paymentType == "카드" ){
            var payInfo = {authNbr : authNbr, payDate : payDate}
            payInfoArr.push(payInfo)
            isDupl = payInfoArr.some(data => (data.authNbr != authNbr) || (data.payDate != payDate) )
        }
    }
});

if(isDupl){
    alert("결제정보가 다릅니다.")
}

 

1. 먼저 name이 chk인 체크된 데이터들을 each문을 돌려서 하나씩 가져온다

2. paymentType이 카드인 경우는 payInfo에 승인번호와 결제일을 key : value 형식으로 데이터들을 담아준 후 payInfoArr 배열에 push 시킨다.

 

3. payInfoArr 변수는 each문 밖에 선언되어 있어 each문이 도는 동안 조건에 맞는 데이터들이 push가 되고

jquery의 some 함수를 이용해 payInfoArr에 담긴 데이터들 중 승인번호와 결제일이 같지 않으면 some 함수를 통해 true를 반환한다. 

 

4. 이후 if문으로 alert을 띄운다.

 

jquery의 some 함수에 대한 설명은 아래 링크에서 확인할 수 있다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/some

 

Array.prototype.some() - JavaScript | MDN

some() 메서드는 배열 안의 어떤 요소라도 주어진 판별 함수를 적어도 하나라도 통과하는지 테스트합니다. 만약 배열에서 주어진 함수가 true을 반환하면 true를 반환합니다. 그렇지 않으면 false를

developer.mozilla.org

 

728x90
반응형
Comments