SIR
KCP 창업 지원, 수수료 국내최저 2.9% 제공 이벤트!

자바스크립트 중복질문이요!!

자바스크립트 중복질문이요!!

QA

자바스크립트 중복질문이요!!

본문

<script>

            for (var floor = 1; floor <= 1; floor++) {

                for (var b = 1 + 6 * (floor - 1); b <= 6 * floor; b++) {

                    for (var c = b + 1; c <= 6 * floor; c++) {

                        var number = Math.floor(Math.random() * (45)) + 1;

                        if (ty[b] == ty[c]) {

                          ty[b] = number; //[b];

                          c = b; //중복 발생하면 그 순서를 다시 실행해야하니까 다시 선언해줌.

                        }

                    }

                }

            }

        </script>

 

중복 피하게 할려고 하는데 어디가 잘못된걸까요???

for문 구조는 고치지 말고 해주세요...

 

ty배열에는 랜덤으로 숫자를 넣어났습니다.

ty배열 일대일대응으로 체크해서 중복 값이 나오면 중복 값 랜덤 값 넣어주고 다시 체크해줍니다.

제가 의도한거랑 코드가 잘못된거 같은데 도와주십쇼

이 글을 내 페이스북 계정으로 보내기 이 글을 내 트위터 계정으로 보내기

이 질문에 댓글 쓰기 :

답변 2

swallow님의 답변

우선 다음처럼  ty배열을 정의하고 테스트 했는데요


var ty = [1,1,3,3,5,5,6,7,8,1,2,4,5,64,90,99,99];
            for (var floor = 1; floor <= 1; floor++) {
                for (var b = 1 + 6 * (floor - 1); b <= 6 * floor; b++) {
                    for (var c = b + 1; c <= 6 * floor; c++) {
                        var number = Math.floor(Math.random() * (45)) + 1;
                        if (ty[b] == ty[c]) {
                          ty[b] = number; //[b];
                          c = b; //중복 발생하면 그 순서를 다시 실행해야하니까 다시 선언해줌.
                        }
                    }
                }
            }
            console.log(ty);

콘솔 결과는 [1, 1, 3, 3, 4, 17, 5, 6, 7, 8, 1, 2, 4, 5, 64, 90, 99, 99] 로 인덱스 4,5번째에 중복되어 있는 값 5,5이 없어지고 대신 17,5으로 바뀝니다.
개발자님이 제시한 for문 로직을 보면 인덱스 1부터 6까지만 중복값을 따집니다.
배열은 인덱스 0부터 시작됩니다.
어째든 for문의 시작과 끝 점이 의도적이라면 로직은 정상이라고 봐도 되겠습니다.
하지만 ty배열 전체의 중복성을 따지려면 시작점을 0부터 시작해야 할것 같구 끝점도 ty배열의 길이값인 ty.length로설정해야 할것 같아요.
 
주소복사
답변의 댓글

백번째개발님의 답변

추출 할때마다 배열에 넣으시고 재귀 함수에서 비교 후 하면 될 것 같네요

주소복사
답변의 댓글
답변을 작성하시기 전에 로그인 해주세요.
전체 93,298 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

진행중 포인트경매

  1. 참여4 회 시작20.11.23 11:40 종료20.11.28 11:40
  2. 참여9 회 시작20.11.22 19:25 종료20.11.29 13:25

(주)에스아이알소프트 (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT