일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 |
29 | 30 | 31 |
Tags
- checkbox
- JSON
- 오라클
- vue Carousel
- jsp
- Tomcat
- jdbc
- 마스킹
- JAXBContext
- bulkinsert
- JQuery
- INSERT
- vscode tutorial
- github
- mysql
- MariaDB
- 기출문제
- spring
- query
- NoSQL
- Ajax
- java
- 정보처리산업기사
- vue.js
- 부스트코스
- mybatis
- egov
- 구멍가게코딩단
- swipe 배너
- insertAll
Archives
- Today
- Total
개발새발
[jquery]배열의 중복 데이터 존재 유무 체크 본문
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
728x90
반응형
Comments