Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में बटरफ्लाई शफल कैसे करें


जावास्क्रिप्ट में एक बटरफ्लाई शफल्ड एरे नंबरों का एक एरे है जिसे इस तरह सॉर्ट किया जाता है कि संख्याएं घटती हैं जैसे ही हम एरे के केंद्र के पास पहुंचते हैं और बढ़ती हैं जैसे ही हम एरे के अंत के पास पहुंचते हैं। सबसे बड़ी संख्या सबसे पहले इंडेक्स पर रखी जाती है।

बटरफ्लाई शफल्ड एरे का एक और रूप है जहां संख्याएं केंद्र की ओर बढ़ती हैं और अंत की ओर घटती हैं। इस मामले में सबसे छोटी संख्या सबसे पहले इंडेक्स पर रखी जाती है।

गणित की पृष्ठभूमि वाले लोगों के लिए, यह कुछ हद तक गौसियन वितरण से संबंधित है।

उदाहरण

मान लीजिए हमारे पास यह एरे है -

const arr = [8,2,6,3,9,1,4,5,0,7];

यदि हम इस पर बटरफ्लाई शफलिंग लागू करते हैं, तो आउटपुट होगा -

[9, 7, 5, 3, 1,0, 2, 4, 6, 8]

देखें कैसे सबसे बड़ी और दूसरी सबसे बड़ी संख्याएं चरम छोर पर रखी गई हैं और सबसे छोटी संख्या केंद्र में।

एक और संभावना हो सकती है -

[0, 2, 4, 6, 8, 9, 7, 5, 3, 1]

हमारा काम एक फ़ंक्शन लिखना है जो नंबरों का एक एरे लेता है और दूसरे आर्गुमेंट के रूप में एक स्ट्रिंग, स्ट्रिंग 'asc' या 'des' दो मानों में से कोई भी ले सकती है। -

  • यदि स्ट्रिंग 'des' है तो हमें एरे को बढ़ते से घटते क्रम में शफल करना है।

  • यदि यह 'asc' है तो हमें एरे को घटते से बढ़ते क्रम में शफल करना है।

दृष्टिकोण

  • यदि स्ट्रिंग 'asc' है तो हम शुरुआत में एरे को आरोही क्रम में सॉर्ट करते हैं अन्यथा अवरोही क्रम में। तो, मान लीजिए फ़ंक्शन को 'asc' के साथ कॉल किया गया था, तो एरे अब ऐसा दिखेगा -

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • फिर हम एरे को दो एरे में विभाजित करते हैं जैसे कि आसन्न तत्व विपरीत एरे में वितरित होते हैं। हम एक एरे में तत्वों को पुश करते हैं जबकि हम उन्हें दूसरे में अनशिफ्ट करते हैं, ताकि एक एरे हमें मैन्युअली ऐसा किए बिना उल्टा हो जाए।

इस प्रकार बने दो एरे इस तरह दिखेंगे -

[ 0, 2, 4, 6, 8 ] [ 9, 7, 5, 3, 1 ]
  • अब अंतिम चरण इन एरे को जोड़ना है और जिसके बाद हमें हमारा आवश्यक एरे मिल जाएगा। यह सब जब कोड में डाला जाता है तो कुछ ऐसा दिखेगा -

उदाहरण

const array = [8,2,6,3,9,1,4,5,0,7]; const butterflyShuffle = (array, order = 'asc') => {    //मूल एरे को म्यूटेट न करने के लिए एरे की एक नई कॉपी बनाना    const arr = array.slice();    //आर्गुमेंट के आधार पर आरोही या अवरोही क्रम में सॉर्ट करना    arr.sort((a, b) => order === 'asc' ? a-b : b-a);    const first = [], second = [];    //यह वेरिएबल बाद में यह निर्धारित करने में मदद करेगा कि कौन सा एरे उल्टा करना है    //और किसे किससे जोड़ना है    //यदि लंबाई सम है, तो इसका मतलब है कि अंतिम तत्व दूसरे एरे में जाएगा    //अन्यथा यह पहले एरे में जाएगा    const isEven = arr.length % 2 === 0;    for (let i = 0; i < arr.length; i++){       if(i % 2 === 0){          isEven ? first.push(arr[i]) : first.unshift(arr[i]);          continue;       };       isEven ? second.unshift(arr[i]) : second.push(arr[i]);    };    return isEven ? second.concat(first) : first.concat(second); }; console.log(butterflyShuffle(array)); console.log(butterflyShuffle(array, 'des'));

आउटपुट

कंसोल में आउटपुट होगा -

[    9, 7, 5, 3, 1,    0, 2, 4, 6, 8 ] [    0, 2, 4, 6, 8,    9, 7, 5, 3, 1 ]

  1. जावास्क्रिप्ट में एरे को सेट में कैसे कन्वर्ट करें? जावास्क्रिप्ट में एरे को सेट में कैसे कन्वर्ट करें?

    जावास्क्रिप्ट में एरे को सेट में कन्वर्ट करने के लिए कोड निम्नलिखित है: उदाहरण <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document</title> <style> body { &nb

  1. JavaScript में ऑब्जेक्ट्स की सरणी को ID के आधार पर कैसे ग्रुप करें? JavaScript में ऑब्जेक्ट्स की सरणी को ID के आधार पर कैसे ग्रुप करें?

    JavaScript में ऑब्जेक्ट्स की सरणी को ID के आधार पर ग्रुप करने का निम्नलिखित कोड है:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <

  1. - JavaScript ऐरे को C# ऐरे में कनवर्ट करना

    JavaScript ऐरे से C# ऐरे में कनवर्जन JavaScript ऐरे: <script> var myArr = new Array(5); myArr[0] = Welcome; myArr[1] = to; myArr[2] = the; myArr[3] = Web; myArr[4] = World; </script> कॉमा सेपरेटर के साथ स्ट्रिंग में कनवर्ट करें: document.getElementById(dem