자바스크립트 중복질문이요!!
본문
<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로설정해야 할것 같아요.
!-->
추출 할때마다 배열에 넣으시고 재귀 함수에서 비교 후 하면 될 것 같네요
답변을 작성하시기 전에 로그인 해주세요.