2016-06-04 2 views
0

자바 스크립트 patern을 만드는 데 며칠이 걸렸습니다. 자바 스크립트 setTimeout을 두 개의 루프로

내가 가진 multidimentionnal 배열을 구문 분석이로 x와 y 위치를 포함하는 "루프에 대한"

array[1][x] 
array[1][y] 

array[2][x] 
array[2][y] 

ect... 

내가 길이를 배열과의 사용자 푸시 x와 y 번호를 모른다 기능이 활성화되면 어레이의 길이는으로 고정됩니다. 매초마다 늘리거나 줄이기 array.length 한 배열의 끝에서 한 번호에 대한 x 및 y 배열을 구문 분석하려면 rebegin 싶습니다 배열 [1] [x] == stopX & & 배열 [ 1] [y] == stopY.

다른 접근법 테스트 버그와 무한 루프가 있습니다.

// i know stopX and stopY they are numbers and never change. 
    var stopX = 25; 
    var stopy = 49; 
//i wish an condition to stop the script as this : 
    while(array[i][x] != stopX && array[i][y] != stopY){ 

    for(i = 1 ; i < array.length; i++){ 
    (function(){ 
    var j = i; 
     setTimeout(function(){ 
//here differents "if(){" to increase or decrease array[i][x] and array[i][y]; 
      array[i][x] += 1; 
      array[i][y] += 1; 
     }, j*1000); 
     } 
    } 
} 

내가이 같은 "수하는 동안"필요합니까 "w의 * J * 1000"나는 내가하지만 더 나은 일이, 내가 생각하는 폐쇄 완전히 유틸리티를 이해하지 못하고,이 개념을 이해하지 않습니다 두 번째 종결이 필요하지만 어디서 어떻게 설정할 수 있습니까?

+0

그래서 1 초마다 무엇을 함수에서 (미안하지만 작성이 혼란 스럽습니다) 찾고 있습니다. 배열로 1 단계 앞으로 나아가고, 매초마다 x와 y에 1을 더하는 것입니다. 이 길이가 없습니다 – user2950720

+1

클로저 안에'j'를 써야하지 않습니까? 유일하게'j'를 사용할 경우'i'와 같은 값을 갖습니다. – Oriol

+0

그래, 나는 array [1] [x] == stopX && array [1] [y] == stopY 루프 멈춤 일 경우 배열의 끝까지 배열에서 1 초당 앞당기 고있다. array [1] [x]! == stopX &&! array [1] [y] == stopY 배열을 다시 구문 분석하여 stepX의 수와 일치 할 때까지 1을 더하도록 루프를 반복하십시오. –

답변

0

마지막으로 "while loop"를 setinterval + setTimeout + clearInterval로 바꿉니다.

관련 문제