एरे फ्लैट करना (Flattening)
एरे को फ्लैट करना का अर्थ है प्रदान किए गए एरे के अंदर मौजूद नेस्टेड एरे के समूह को मर्ज करना।
एरे फ्लैट करने के दो तरीके
1) concat.apply()
निम्न उदाहरण में कुछ नेस्टेड एरे हैं जिनमें एलिमेंट्स 3,4,5 और 6 हैं। concat() मेथड का उपयोग करके उन्हें फ्लैट करने के बाद हमें आउटपुट मिलता है: 1,2,3,4,5,6,9।
<html> <body> <script> var arrays = [1, 2, [3, 4, [5, 6]], 9]; var merged = [].concat.apply([], arrays); document.write(merged); // 1,2,3,4,[5,6],9 - केवल एक लेवल फ्लैट होता है! </script> </body> </html>
आउटपुट
1,2,3,4,5,6,9
नोट: concat.apply केवल **एक लेवल** फ्लैट करता है। गहरे नेस्टेड एरे के लिए यह काम नहीं करता।
2) array.flat() (ES2019) - अनुशंसित
निम्न उदाहरण में नेस्टेड एलिमेंट्स जैसे 2,3,4,5,6,9 हैं। array.flat() मेथड का उपयोग करके उन्हें फ्लैट करने के बाद हमें आउटपुट मिलता है: 1,2,2,3,4,5,6,9।
<html> <body> <script> const arrays = [1, 2, [2, 3, [4, 5, [6, 9]]]]; const merged = arrays.flat(2); // गहराई 2 document.write(merged); </script> </body> </html>
आउटपुट
1,2,2,3,4,5,6,9
flat() मेथड विवरण
arr.flat([depth]) // depth: डिफ़ॉल्ट 1, Infinity लिए पूरी गहराई तक
उदाहरण
[1, [2, [3, [4]]]].flat() // [1, 2, [3, [4]]] - डिफ़ॉल्ट गहराई 1 [1, [2, [3, [4]]]].flat(2) // [1, 2, 3, [4]] [1, [2, [3, [4]]]].flat(Infinity) // [1, 2, 3, 4] - पूरी तरह फ्लैट
पॉलीफिल (पुराने ब्राउज़र्स के लिए)
if (!Array.prototype.flat) {
Array.prototype.flat = function(depth = 1) {
return this.reduce((acc, val) =>
acc.concat(Array.isArray(val) && depth > 0 ? val.flat(depth - 1) : val), []);
};
}