क्या एक पुनरावर्ती खंड समारोह लिखना संभव है? यदि नहीं, तो क्यों नहीं?
मुझे इस फ़ंक्शन की आवश्यकता नहीं है, मैं केवल रिकर्सन को समझने और अवधारणा का उपयोग करने वाले अपने स्वयं के कार्यों को लिखने की कोशिश कर रहा हूं। अगर मैं इस समस्या को हल करने के लिए रिकर्सन का उपयोग नहीं कर सकता, तो इस मामले में और अन्य में नौकरी के लिए रिकर्सन गलत टूल क्या बनाता है?
function chunk(array, size) {
if (array.length === 0) {
return array;
} else {
return [array.slice(0, size), chunk(array.slice(size),size)];
}
}
-2
Andy
22 जुलाई 2018, 20:27
2 जवाब
अगर मैं आपको सही ढंग से समझ पाया तो आप कुछ इस तरह हासिल करने की कोशिश कर रहे हैं
function chunk(array, size) {
if (array.length === 0) {
return array;
} else {
return [array.slice(0, size)].concat(chunk(array.slice(size),size));
}
}
0
Boban Stanojevic
22 जुलाई 2018, 20:44
आपका फ़ंक्शन पहले खंडित सरणी के साथ एक सरणी देता है और फिर प्रत्येक आगे के खंड के लिए नेस्टेड सरणी देता है।
return [array.slice(0, size), chunk(array.slice(size), size)];
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
उल्लिखित भाग को एक सरणी स्तर उठाने की आवश्यकता है। यह स्प्रेड सिंटैक्स { के इस्तेमाल से किया जा सकता है chunk
के सामने ...
।
function chunk(array, size) {
return array.length
? [array.slice(0, size), ...chunk(array.slice(size), size)]
: [];
}
console.log(chunk([1, 2, 3, 4, 5, 6, 7, 8], 3));
.as-console-wrapper { max-height: 100% !important; top: 0; }
0
Nina Scholz
22 जुलाई 2018, 20:45
chunk
एक सरणी देता है, आपको संभवतःconcat
खंड का परिणाम होना चाहिए यदि आप एक गहरा-नेस्टेड परिणाम नहीं चाहते हैं।