चलें मान मैं एक समारोह है कि एक सरणी से अधिक क्रॉल करता है ...अनंत रिकर्सन का पता लगाएं?
flatten([a, b, c, d, [e, f, g, [h, i, j, k], l], m, n, o, p])
>> [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p]
समतल कोड पर और प्रत्येक सरणी का सामना करना पड़ा रिकर्सिवली कि सरणी में प्रवेश करने और वापस जाने के मूल्यों में इस तरह आप एक फ्लैट है कि होगा के लिए क्रॉल करेगा सरणी।
यह काम करता है जब तक हम इस तरह के रूप में एक सरणी है:
a = [];
a[0] = a;
यह स्पष्ट रूप से अनंत प्रत्यावर्तन बनाता है:
Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
0: Array[1]
...
मैं सरणी ऐसी है कि समारोह सौदा कर सकते हैं modifiying बिना इस व्यवहार कैसे पता लगा सकते हैं इसके साथ?
क्या हम इसे क्रॉल कर सकते हैं, और यदि हमने पहले से ही उस सरणी को क्रॉल किया है, तो हम ऊपर वर्णित स्थिति में हैं ... –
[इस पोस्ट] को देखें [http: // stackoverflow ।com/एक/9386208/989,121)। यह मूल रूप से एक समारोह सजावट लिखने के लिए दिखाता है जो रिकर्सन गहराई को सीमित करता है। – georg