> 웹 프론트엔드 > JS 튜토리얼 > 루프와 recursion_javascript 기술에 대한 간략한 토론

루프와 recursion_javascript 기술에 대한 간략한 토론

WBOY
풀어 주다: 2016-05-16 17:41:14
원래의
1111명이 탐색했습니다.

예를 들어 다음 1차원 배열을 순회합니다.

코드 복사 코드는 다음과 같습니다.

[javascript] view plaincopyprint?
var a1 = [1];
var a2 = [1, 2]
var a3 = [1, 2, 3];
길이는 다양하지만 반복하는 것은 매우 쉽고 우아합니다.

코드 복사 코드는 다음과 같습니다.[javascript] view plaincopyprint?
var dumpArrayByLoop = function(a) {
for (var i = 0; i < a.length; i ) {
println(a[i])
}
}; >


대신 재귀를 사용하면 어색해 보입니다.

코드 복사

코드는 다음과 같습니다.[javascript] view plaincopyprint? var dumpArrayByRecur = function(i, a) {
if (i < a.length) {
println(a[i])
dumpArrayByRecur(i 1, a)
} }
}



동일한 결과를 출력하지만 재귀 버전은 비교해 보면 투박해 보입니다.

이제 메타데이터가 변경되면 생각해 보세요. 차원이 2차원으로 확장됩니다.

코드 복사

코드는 다음과 같습니다.[javascript] view plaincopyprint? var a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]


이때 이중 루프를 형성하려면 외부에 또 다른 루프 레이어를 추가해야 합니다.

코드 복사

코드는 다음과 같습니다.[javascript] view plaincopyprint? var dumpArrayByLoop = function(a) {
for (var i = 0; i < a.length; i ) {
for (var j = 0; j < a[i].length; j ) {
                  println(a[i][j]); 루프 사용을 처리하는 방법은 무엇입니까?

'레이어' 수가 매우 깊거나 심지어 불확실한 상황에서는 교차 '레이어' 문제를 해결하기 위해 '재귀'를 사용해야 합니다.





코드 복사

코드는 다음과 같습니다.

[javascript] view plaincopyprint?

var isArray = function(a) { return Object.prototype.toString.call(a) === '[객체 배열]' }; var dumpArrayByRecur = function(a) { if (isArray(a)) { for (var i = 0; i < a.length; i ) {
dumpArray(a[i])
} else {
println(a);
}
};



위 코드에서 하위 노드가 배열인 것으로 확인되면 재귀를 사용하여 다음 레벨로 진입하고 루프를 사용하여 동일한 레벨의 순회를 완료합니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿