मान लीजिए, हमें एक फ़ंक्शन लिखना है जो पहली आर्गुमेंट के रूप में स्ट्रिंग/नंबर लिटरल्स की एक सरणी arr और दूसरी आर्गुमेंट के रूप में एक संख्या n लेता है।
हमें n उप-सरणियों की एक सरणी लौटानी है, जिनमें से प्रत्येक में अधिकतम arr.length / n तत्व हों। और तत्वों का वितरण इस तरह होना चाहिए:
- पहला तत्व पहली उप-सरणी में जाता है, दूसरा दूसरी में, तीसरा तीसरी में, और इसी तरह।
- एक बार जब प्रत्येक उप-सरणी में एक तत्व हो जाता है, तो हम फिर से पहली उप-सरणी को उसके दूसरे तत्व से भरना शुरू करते हैं।
- इसी तरह, जब सभी उप-सरणियों में दो तत्व हो जाते हैं, उसके बाद ही हम पहली सरणी में तीसरा तत्व भरते हैं, और इसी तरह।
उदाहरण
यदि इनपुट सरणी है:
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
और संख्या n 3 है, तो आउटपुट होना चाहिए:
const output = [ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ];
हम मूल सरणी पर Array.prototype.reduce() मेथड का उपयोग करके वांछित सरणी का निर्माण करेंगे।
कोड
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
const divideArray = (arr, size) => {
return arr.reduce((acc, val, ind) => {
const subIndex = ind % size;
if (!Array.isArray(acc[subIndex])) { acc[subIndex] = [val]; }
else { acc[subIndex].push(val); }
return acc;
}, []);
};
console.log(divideArray(input, 3));
आउटपुट
[ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ]