ホームページ >ウェブフロントエンド >jsチュートリアル >ループと recursion_javascript のスキルに関する簡単な説明

ループと recursion_javascript のスキルに関する簡単な説明

WBOY
WBOYオリジナル
2016-05-16 17:41:141103ブラウズ

たとえば、次の 1 次元配列を走査します:

コードをコピー コードは次のとおりです:

[javascript] view plaincopyprint?
var a1 = [1];
var a2 = [1, 2]

; 長さは異なりますが、ループするのは非常に簡単でエレガントです:

コードをコピー コードは次のとおりです:
[javascript] view plaincopyprint?
var dumpArrayByLoop = function(a) {
for (var i = 0; i println(a[i]) }
}; >

代わりに再帰を使用すると、見た目がぎこちなくなります:

コードをコピー コードは次のとおりです:[javascript] view plaincopyprint?
var dumpArrayByRecur = function(i, a) {
if (i println(a[i]);
dumpArrayByRecur(i 1, a);
}



これらは同じ結果を出力しますが、再帰バージョンは比較すると不格好に見えます。

ここで、メタデータが変更された場合について考えてみましょう。次元は 2 次元に拡張されます。

コードをコピー

コードは次のとおりです:[javascript] view plaincopyprint? var a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];


この時点で、外側にもう 1 つのループ層を追加して二重ループを形成する必要があります:

コードをコピー


コードは次のとおりです:

[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 dumpArray(a[i]) } else { println(a);
}
};



上記のコードでは、子ノードが配列であることが判明した場合、再帰を使用して次のレベルに進み、同じレベルの走査はループを使用して完了します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。