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

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

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

우선 다음처럼  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로설정해야 할것 같아요.
 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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