जावास्क्रिप्ट में टाइप्डएरे (TypedArray)

जावास्क्रिप्ट में टाइप्डएरे (TypedArray)

यह लेख जावास्क्रिप्ट में TypedArray को समझाता है।

हम TypedArray की बुनियादी अवधारणा, प्रत्येक प्रकार, उनका उपयोग कैसे करें, और विशिष्ट उपयोग के मामलों को विस्तार से समझाएंगे।

YouTube Video

जावास्क्रिप्ट में टाइप्डएरे (TypedArray)

जावास्क्रिप्ट में TypedArray बफर किए गए बाइनरी डेटा को प्रभावी ढंग से संभालने के लिए एक ऑब्जेक्ट है। TypedArray विशिष्ट डेटा प्रकारों के आधार पर मेमोरी आवंटित और प्रबंधन करता है। सामान्य ऐरे के विपरीत, TypedArray केवल फिक्स्ड-साइज़ बाइनरी डेटा रख सकता है, मनमाने डेटा प्रकार नहीं।

TypedArray की मूल संरचना

TypedArray के मुख्य घटक ArrayBuffer और TypedArray स्वयं हैं।

  • ArrayBuffer: फिक्स्ड-साइज़ बफर जो मेमोरी में बाइनरी डेटा आवंटित करता है। यह बफर केवल एक डेटा एरिया है और इसे सीधे पढ़ा या लिखा नहीं जा सकता।
  • TypedArray: एक रैपर ऑब्जेक्ट जो बफर पर एक विशिष्ट डेटा प्रकार लागू करता है, जिससे डेटा का एक्सेस और प्रबंधन संभव होता है।

मूल उपयोग का उदाहरण

नीचे ArrayBuffer बनाने और फिर इसके आधार पर एक TypedArray बनाने का उदाहरण दिया गया है।

 1// Create a 16-byte buffer
 2const buffer = new ArrayBuffer(16);
 3
 4// Create a TypedArray (Uint8Array) to handle 8-bit unsigned integers
 5const uint8Array = new Uint8Array(buffer);
 6
 7// Set data
 8uint8Array[0] = 255;
 9uint8Array[1] = 128;
10
11// Retrieve data
12console.log(uint8Array[0]); // 255
13console.log(uint8Array[1]); // 128
  • इस उदाहरण में, एक ArrayBuffer बनाया गया है और उसके आधार पर एक Uint8Array बनाया गया है। प्रत्येक तत्व को 8-बिट बिना चिह्नित पूर्णांक (unsigned integer) के रूप में माना जाता है, और यह केवल निर्दिष्ट सीमा के भीतर मान संग्रहीत करता है।

TypedArray के प्रकार

प्रत्येक डेटा प्रकार के लिए TypedArray के विभिन्न प्रकार होते हैं। मुख्य प्रकार निम्नलिखित हैं।

प्रकार का नाम तत्व का आकार विवरण
Int8Array 1 बाइट 8-बिट साइन इन्टिजर
Uint8Array 1 बाइट 8-बिट अनसाइन इन्टिजर
Uint8ClampedArray 1 बाइट 8-बिट अनसाइन इन्टिजर (क्लैम्प्ड मान रखता है)
Int16Array 2 बाइट्स 16-बिट साइन इन्टिजर
Uint16Array 2 बाइट्स 16-बिट अनसाइन इन्टिजर
Int32Array 4 बाइट्स 32-बिट साइन इन्टिजर
Uint32Array 4 बाइट्स 32-बिट अनसाइन इन्टिजर
Float32Array 4 बाइट्स 32-बिट फ्लोटिंग-पॉइंट संख्या
Float64Array 8 बाइट्स 64-बिट फ्लोटिंग-पॉइंट संख्या

ये TypedArray सभी मेमोरी-कुशल हैं और बड़ी मात्रा के डेटा को संभालने में प्रभावी हैं।

TypedArrays में हेरफेर

आप एक TypedArray में डेटा को इंडेक्स का उपयोग करके एक्सेस कर सकते हैं, जैसे एक सामान्य एरे में किया जाता है, लेकिन कई विशेष तरीकों का भी प्रावधान है।

मान सेट करना

एक TypedArray में, आप set मेथड का उपयोग करके एक बार में कई मान असाइन कर सकते हैं।

1const buffer = new ArrayBuffer(8);
2const int16Array = new Int16Array(buffer);
3
4// Set values
5int16Array.set([10, 20, 30]);
6
7console.log(int16Array[0]); // 10
8console.log(int16Array[1]); // 20
9console.log(int16Array[2]); // 30
  • set विधि का उपयोग करके यह कोड एक साथ कई मानों को Int16Array में असाइन करता है, और प्रत्येक तत्व को कंसोल में प्रदर्शित करता है।

एक सबएरे प्राप्त करना

एक TypedArray के किसी हिस्से को सबएरे के रूप में प्राप्त करने के लिए, subarray मेथड का उपयोग करें। यह मूल TypedArray के समान बफर का संदर्भ देता है।

1const int16Array = new Int16Array([1, 2, 3, 4, 5]);
2
3// Get a subarray containing elements from the 2nd to the 4th
4const subArray = int16Array.subarray(1, 4);
5
6console.log(subArray); // Int16Array [2, 3, 4]
  • यह कोड subarray विधि का उपयोग करके Int16Array से निर्दिष्ट सीमा के तत्व प्राप्त करता है और सबएरे को कंसोल में दिखाता है।

बफर्स की कॉपी करना

एक TypedArray का बफर किसी अन्य TypedArray में भी कॉपी किया जा सकता है। set मेथड का उपयोग करके, आप निर्दिष्ट स्थिति से कॉपी कर सकते हैं।

1const srcArray = new Uint8Array([10, 20, 30, 40]);
2const destArray = new Uint8Array(4);
3
4// Copy
5destArray.set(srcArray);
6
7console.log(destArray); // Uint8Array [10, 20, 30, 40]
  • यह कोड set विधि का उपयोग करके Uint8Array की सामग्री को दूसरी एरे में कॉपी करता है, और कॉपी की गई एरे को कंसोल में प्रदर्शित करता है।

DataView का उपयोग करना

जहां TypedArray निश्चित डेटा प्रकारों वाले बफर्स को संभालता है, वहां DataView एक इंटरफ़ेस है जो मनमाने ऑफसेट्स और डेटा प्रकारों के साथ बाइनरी डेटा में लचीलापन प्रदान करता है। यह एक ही बफर में विभिन्न प्रकारों के मिश्रण की अनुमति देता है।

 1const buffer = new ArrayBuffer(8);
 2const dataView = new DataView(buffer);
 3
 4// Write a 32-bit signed integer at offset 0
 5dataView.setInt32(0, 12345);
 6
 7// Write a 32-bit floating-point number at offset 4
 8dataView.setFloat32(4, 12.34);
 9
10console.log(dataView.getInt32(0)); // 12345
11console.log(dataView.getFloat32(4)); // 12.34000015258789
  • यह कोड एक ही बफर पर अलग-अलग प्रकार के डेटा—32-बिट इंटीजर और 32-बिट फ्लोटिंग-पॉइंट नंबर—लिखने के लिए DataView का उपयोग करता है और परिणाम जांचता है।

  • DataView TypedArray की तुलना में डेटा एक्सेस में अधिक लचीलापन प्रदान करता है और यह विशेष रूप से बाइनरी फॉर्मेट फ़ाइलों या नेटवर्क प्रोटोकॉल के साथ काम करने में उपयोगी है।

TypedArray के उपयोग के मामले

TypedArray मुख्य रूप से बड़ी मात्रा में बाइनेरी डेटा को कुशलतापूर्वक संभालने के लिए उपयोग किया जाता है। विशिष्ट उपयोग मामलों में निम्नलिखित शामिल हैं।

इमेज प्रोसेसिंग (छवि प्रसंस्करण)

TypedArray का उपयोग छवि डेटा के पिक्सेल जानकारी में हेरफेर करते समय किया जाता है। Uint8Array का उपयोग करके, आप प्रत्येक पिक्सेल के RGBA मान को धारण करते हैं और छवि संपादन और प्रसंस्करण करते हैं।

 1const width = 100;
 2const height = 100;
 3const imageData = new Uint8Array(width * height * 4); // RGBA
 4
 5// Set pixel data
 6for (let i = 0; i < imageData.length; i += 4) {
 7    imageData[i] = 255;     // Red
 8    imageData[i + 1] = 0;   // Green
 9    imageData[i + 2] = 0;   // Blue
10    imageData[i + 3] = 255; // Alpha
11}
  • यह कोड Uint8Array का उपयोग करके 100 चौड़ाई और 100 ऊँचाई वाला चित्र डेटा RGBA प्रारूप में बनाता है, और सभी पिक्सल को लाल रंग में सेट करता है।

वेबअसेंबली के साथ इंटरफेसिंग

TypedArray का उपयोग जावास्क्रिप्ट और वेबअसेंबली के बीच बाइनरी डेटा के आदान-प्रदान के लिए किया जाता है। ArrayBuffer के माध्यम से जावास्क्रिप्ट और वेबअसेंबली की मेमोरी स्पेस साझा करके, तेज डेटा आदान-प्रदान संभव है।

ऑडियो और वीडियो डेटा का प्रसंस्करण

TypedArray ऑडियो और वीडियो के प्रसंस्करण में एक महत्वपूर्ण भूमिका निभाता है। आप Float32Array में ऑडियो डेटा वेवफॉर्म संग्रहीत कर सकते हैं ताकि प्लेबैक और प्रसंस्करण किया जा सके।

निष्कर्ष

TypedArray बड़ी मात्रा में बाइनरी डेटा को कुशलतापूर्वक संभालने के लिए एक शक्तिशाली उपकरण है। यह विशेष रूप से प्रदर्शन-महत्वपूर्ण अनुप्रयोगों जैसे कि छवि प्रसंस्करण, वेबअसेंबली, और ऑडियो/वीडियो डेटा प्रसंस्करण में उपयोगी है। TypedArray की एपीआई नियमित ऐरे की तरह होती है, लेकिन इसमें मेमोरी उपयोग और डेटा प्रकारों के संबंध में कुछ सीमाएं होती हैं, इसलिए इसके उपयोग में सही भिन्नता आवश्यक है।

आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।

YouTube Video