जावास्क्रिप्ट में टाइप्डएरे (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 चैनल को भी देखें।