कोडिंग: जावास्क्रिप्ट में एक सरणी को समतल करें

Feb 18 2023
समतल सरणी: किसी सरणी को समतल करने का अर्थ है एक ऐसी सरणी लेना जिसमें नेस्टेड सरणियाँ हो सकती हैं (अर्थात

समतल सरणी: एक सरणी को समतल करने का अर्थ है एक ऐसी सरणी लेना जिसमें नेस्टेड सरणियाँ हो सकती हैं (अर्थात, सरणियों के भीतर सरणियाँ) और इसे एकल, एक-आयामी सरणी में परिवर्तित करना। दूसरे शब्दों में, इसमें सभी नेस्टेड सरणियों को हटाना और उनके तत्वों को एक ही सरणी में संयोजित करना शामिल है।

हम कई समाधानों पर चर्चा करेंगे।

समाधान 1: पुनरावर्तन का उपयोग करना

समतल सरणी

कोड एक फ़ंक्शन को परिभाषित करता है FlattenArrayजिसे तर्क के रूप में एक सरणी लेता है। फ़ंक्शन का लक्ष्य एक नेस्टेड सरणी लेना और उसका एक चपटा संस्करण वापस करना है। उदाहरण के लिए, यदि इनपुट है [1, 2, [3, 4]], तो फ़ंक्शन को वापस आना चाहिए [1, 2, 3, 4]।

फ़ंक्शन एक खाली सरणी बनाकर शुरू होता है जिसे इनपुट सरणी के चपटा संस्करण को संग्रहीत करने के लिए उपयोग किया जाएगा। यह तब एक forलूप में प्रवेश करता है जो इनपुट एरे में प्रत्येक तत्व के माध्यम से पुनरावृति करेगा।

इनपुट सरणी में प्रत्येक तत्व के लिए, फ़ंक्शन यह जांचता है कि क्या तत्व Array.isArrayविधि का उपयोग करके स्वयं एक सरणी है। यदि तत्व एक सरणी है, तो फ़ंक्शन नेस्टेड सरणी के साथ एक तर्क के रूप में खुद को पुनरावर्ती रूप से कॉल करता है और फ़ंक्शन की शुरुआत में बनाए गए concatचपटा नेस्टेड सरणी को गठबंधन करने के लिए विधि का उपयोग करता है।flatArray

यदि तत्व एक सरणी नहीं है, तो फ़ंक्शन केवल तत्व को flatArray.

इनपुट सरणी में सभी तत्वों को संसाधित करने के बाद, फ़ंक्शन रिटर्न देता है flatArray।

पूरा कोड:

// Flatten Array
function FlattenArray(arr) {
  var flatArray = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      flatArray = flatArray.concat(FlattenArray(arr[i]))
    } else {
      flatArray.push(arr[i])
    }
  }
  return flatArray
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))

समाधान 2: कम करने की विधि का उपयोग करना

function flattenArray(arr) {
  return arr.reduce(function(flatArray, current) {
    if (Array.isArray(current)) {
      return flatArray.concat(flattenArray(current));
    } else {
      return flatArray.concat(current);
    }
  }, []);
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

विधि reduceमें दो तर्क होते हैं: एक कॉलबैक फ़ंक्शन और संचायक के लिए एक प्रारंभिक मान। इस मामले में, संचायक एक खाली सरणी है जिसका उपयोग इनपुट सरणी के चपटे संस्करण को बनाने के लिए किया जाएगा।

कॉलबैक फ़ंक्शन दो तर्क लेता है: संसाधित किया जा रहा वर्तमान मान (जो बदले में इनपुट ऐरे का प्रत्येक तत्व होगा), और संचायक का वर्तमान मान।

कॉलबैक फ़ंक्शन के अंदर, हम जांचते हैं कि वर्तमान मान एक सरणी है या नहीं Array.isArray। flattenArrayयदि यह एक सरणी है, तो हम नेस्टेड सरणी को समतल करने के लिए पुनरावर्ती रूप से कॉल करते हैं और फिर concatविधि का उपयोग करके चपटी सरणी को संचायक के साथ जोड़ते हैं।

यदि वर्तमान मान एक सरणी नहीं है, तो हम इसे उपयोग करके संचायक के साथ जोड़ते हैं concat।

अंत में, reduceविधि संचायक का अंतिम मान लौटाती है, जो इनपुट ऐरे का चपटा संस्करण होगा।

इस कोड के साथ, आपको पहले जैसा ही आउटपुट मिलना चाहिए: [1, 2, 3, 4, 5, 6, 7, 8, 9].

यदि आप जावास्क्रिप्ट में कोडिंग के बारे में अधिक जानने में रुचि रखते हैं, तो अधिक कोड स्निपेट्स और उदाहरणों के लिए मुझे फॉलो करना सुनिश्चित करें। मैं भाषा में महारत हासिल करने और एक डेवलपर के रूप में अपने कौशल में सुधार करने के बारे में बहुमूल्य जानकारी और सुझाव साझा करूँगा। तो, अधिक अपडेट के लिए बने रहें, और आइए एक साथ सीखना जारी रखें।

पढ़ने के लिए धन्यवाद। हैप्पी लर्निंग

पायथन में थ्रेडिंग और मल्टीप्रोसेसिंग ने जावा में एक डेटाबेस तक पहुँचने का सबसे आसान तरीका समझाया Java8 स्ट्रीम आधारित साक्षात्कार प्रश्न - भाग 1 अपाचे मावेन - संक्षेप में