'map' உதவிச் செயல்பாட்டின் மூலம் ஜாவாஸ்கிரிப்ட் இட்டரேட்டர்களின் ஆற்றலைத் திறக்கவும். தரவு ஓட்டங்களை செயல்பாட்டு ரீதியாகவும் திறமையாகவும் மாற்றுவது எப்படி என்பதைக் கற்றுக்கொள்ளுங்கள்.
ஜாவாஸ்கிரிப்ட் இட்டரேட்டர் ஹெல்பர்: செயல்பாட்டு இட்டரேட்டர் மாற்றத்திற்கான மேப்
நவீன ஜாவாஸ்கிரிப்ட் உலகில், தரவுத் தொகுப்புகளுடன் பணிபுரிவதற்கு இட்டரேட்டர்கள் மற்றும் இட்டரபிள்கள் அத்தியாவசியமான கருவிகளாகும். map உதவிச் செயல்பாடு ஒரு இட்டரேட்டரால் உருவாக்கப்பட்ட மதிப்புகளை செயல்பாட்டு ரீதியாக மாற்ற உங்களை அனுமதிக்கிறது, இது சக்திவாய்ந்த மற்றும் திறமையான தரவுக் கையாளுதலை செயல்படுத்துகிறது.
இட்டரேட்டர்கள் மற்றும் இட்டரபிள்களைப் புரிந்துகொள்ளுதல்
map ஹெல்பருக்குள் செல்வதற்கு முன், ஜாவாஸ்கிரிப்டில் உள்ள இட்டரேட்டர்கள் மற்றும் இட்டரபிள்களின் முக்கிய கருத்துக்களை சுருக்கமாகப் பார்ப்போம்.
- Iterable: ஒரு பொருள் அதன் மீண்டும் மீண்டும் செயல்படும் விதத்தை வரையறுக்கிறது, அதாவது
for...ofகட்டமைப்பில் எந்த மதிப்புகள் சுழற்சி செய்யப்படுகின்றன. ஒரு இட்டரபிள்@@iteratorமுறையை செயல்படுத்த வேண்டும், இது ஒரு இட்டரேட்டரை வழங்கும் பூஜ்ஜிய-வாதச் செயல்பாடாகும். - Iterator: ஒரு பொருள் ஒரு வரிசையையும், அது முடிவடையும்போது சாத்தியமான ஒரு திரும்பும் மதிப்பையும் வரையறுக்கிறது. ஒரு இட்டரேட்டர்
next()முறையை செயல்படுத்துகிறது, இது இரண்டு பண்புகளுடன் ஒரு பொருளைத் தருகிறது:value(வரிசையில் அடுத்த மதிப்பு) மற்றும்done(வரிசை முடிந்துவிட்டதா என்பதைக் குறிக்கும் ஒரு பூலியன்).
ஜாவாஸ்கிரிப்டில் உள்ள இட்டரபிள்களின் பொதுவான எடுத்துக்காட்டுகள்:
- அரேக்கள் (
[]) - சரங்கள் (
"hello") - மேப்கள் (
Map) - செட்கள் (
Set) - ஆர்குமென்ட்ஸ் பொருள் (செயல்பாடுகளுக்குள் கிடைக்கும்)
- டைப்டு அரேக்கள் (
Int8Array,Uint8Array, போன்றவை) - பயனர் வரையறுத்த இட்டரபிள்கள் (
@@iteratorமுறையைச் செயல்படுத்தும் பொருள்கள்)
செயல்பாட்டு மாற்றத்தின் சக்தி
செயல்பாட்டு நிரலாக்கம் மாற்றமின்மை மற்றும் தூய செயல்பாடுகளை வலியுறுத்துகிறது. இது மிகவும் கணிக்கக்கூடிய மற்றும் பராமரிக்கக்கூடிய குறியீட்டிற்கு வழிவகுக்கிறது. map இட்டரேட்டர் ஹெல்பர், அசல் தரவு மூலத்தை மாற்றாமல் ஒரு இட்டரேட்டரால் வழங்கப்படும் ஒவ்வொரு மதிப்பிற்கும் ஒரு மாற்றுச் செயல்பாட்டைப் பயன்படுத்த உங்களை அனுமதிக்கிறது. இது செயல்பாட்டு நிரலாக்கத்தின் ஒரு முக்கிய கொள்கையாகும்.
map இட்டரேட்டர் ஹெல்பரை அறிமுகப்படுத்துதல்
map இட்டரேட்டர் ஹெல்பர் குறிப்பாக இட்டரேட்டர்களுடன் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது. இது ஒரு இட்டரேட்டரையும் ஒரு மாற்றுச் செயல்பாட்டையும் உள்ளீடாக எடுத்துக்கொள்கிறது. பின்னர் அது மாற்றப்பட்ட மதிப்புகளை வழங்கும் ஒரு *புதிய* இட்டரேட்டரைத் தருகிறது. அசல் இட்டரேட்டர் அப்படியே இருக்கும்.
ஜாவாஸ்கிரிப்டில் உள்ள அனைத்து இட்டரேட்டர் பொருள்களிலும் நேரடியாக ஒரு உள்ளமைக்கப்பட்ட map முறை இல்லை என்றாலும், Lodash, Underscore.js, மற்றும் IxJS போன்ற நூலகங்கள் இட்டரேட்டர் மேப்பிங் செயல்பாடுகளை வழங்குகின்றன. மேலும், நீங்கள் உங்கள் சொந்த map உதவிச் செயல்பாட்டை எளிதாக செயல்படுத்தலாம்.
தனிப்பயன் map ஹெல்பரை செயல்படுத்துதல்
ஜாவாஸ்கிரிப்டில் ஒரு map உதவிச் செயல்பாட்டின் எளிய செயல்படுத்தல் இங்கே உள்ளது:
function map(iterator, transform) {
return {
next() {
const result = iterator.next();
if (result.done) {
return { value: undefined, done: true };
}
return { value: transform(result.value), done: false };
},
[Symbol.iterator]() {
return this;
}
};
}
விளக்கம்:
mapசெயல்பாடு ஒருiteratorமற்றும் ஒருtransformசெயல்பாட்டை ஆர்குமென்ட்களாக எடுத்துக்கொள்கிறது.- இது ஒரு புதிய இட்டரேட்டர் பொருளைத் தருகிறது.
- புதிய இட்டரேட்டரின்
next()முறையானது அசல் இட்டரேட்டரின்next()முறையை அழைக்கிறது. - அசல் இட்டரேட்டர் முடிந்தால், புதிய இட்டரேட்டரும்
{ value: undefined, done: true }என்பதைத் தருகிறது. - இல்லையெனில், அசல் இட்டரேட்டரிலிருந்து வரும் மதிப்பிற்கு
transformசெயல்பாடு பயன்படுத்தப்படுகிறது, மேலும் மாற்றப்பட்ட மதிப்பு புதிய இட்டரேட்டரில் திரும்ப அனுப்பப்படுகிறது. [Symbol.iterator]()முறையானது திரும்பப் பெறப்பட்ட பொருளையே இட்டரபிளாக ஆக்குகிறது.
map ஐப் பயன்படுத்துவதற்கான நடைமுறை எடுத்துக்காட்டுகள்
map இட்டரேட்டர் ஹெல்பரை எவ்வாறு பயன்படுத்துவது என்பதற்கான சில நடைமுறை எடுத்துக்காட்டுகளைப் பார்ப்போம்.
எடுத்துக்காட்டு 1: ஒரு அரேவிலிருந்து எண்களை வர்க்கப்படுத்துதல்
const numbers = [1, 2, 3, 4, 5];
const numberIterator = numbers[Symbol.iterator]();
const squaredNumbersIterator = map(numberIterator, (x) => x * x);
// இட்டரேட்டரைப் பயன்படுத்தி வர்க்கப்படுத்தப்பட்ட எண்களைப் பதிவு செய்யவும்
let result = squaredNumbersIterator.next();
while (!result.done) {
console.log(result.value); // வெளியீடு: 1, 4, 9, 16, 25
result = squaredNumbersIterator.next();
}
இந்த எடுத்துக்காட்டில், நாம் எண்களின் ஒரு அரேவுடன் தொடங்குகிறோம். numbers[Symbol.iterator]() ஐப் பயன்படுத்தி அரேவிலிருந்து ஒரு இட்டரேட்டரைப் பெறுகிறோம். பின்னர், ஒவ்வொரு எண்ணின் வர்க்கத்தையும் வழங்கும் ஒரு புதிய இட்டரேட்டரை உருவாக்க map ஹெல்பரைப் பயன்படுத்துகிறோம். இறுதியாக, புதிய இட்டரேட்டரை மீண்டும் மீண்டும் இயக்கி, வர்க்கப்படுத்தப்பட்ட எண்களை கன்சோலில் பதிவு செய்கிறோம்.
எடுத்துக்காட்டு 2: சரங்களை பெரிய எழுத்துக்களாக மாற்றுதல்
const names = ["alice", "bob", "charlie"];
const namesIterator = names[Symbol.iterator]();
const uppercaseNamesIterator = map(namesIterator, (name) => name.toUpperCase());
// இட்டரேட்டரைப் பயன்படுத்தி பெரிய எழுத்து பெயர்களைப் பதிவு செய்யவும்
let nameResult = uppercaseNamesIterator.next();
while (!nameResult.done) {
console.log(nameResult.value); // வெளியீடு: ALICE, BOB, CHARLIE
nameResult = uppercaseNamesIterator.next();
}
இந்த எடுத்துக்காட்டு, சரங்களின் இட்டரேட்டரை பெரிய எழுத்து சரங்களின் இட்டரேட்டராக மாற்ற map ஐ எவ்வாறு பயன்படுத்துவது என்பதைக் காட்டுகிறது.
எடுத்துக்காட்டு 3: ஜெனரேட்டர்களுடன் வேலை செய்தல்
ஜெனரேட்டர்கள் ஜாவாஸ்கிரிப்டில் இட்டரேட்டர்களை உருவாக்க ஒரு வசதியான வழியை வழங்குகின்றன.
function* generateNumbers(start, end) {
for (let i = start; i <= end; i++) {
yield i;
}
}
const numberGenerator = generateNumbers(10, 15);
const incrementedNumbersIterator = map(numberGenerator, (x) => x + 1);
// இட்டரேட்டரைப் பயன்படுத்தி அதிகரிக்கப்பட்ட எண்களைப் பதிவு செய்யவும்
let incrementedResult = incrementedNumbersIterator.next();
while (!incrementedResult.done) {
console.log(incrementedResult.value); // வெளியீடு: 11, 12, 13, 14, 15, 16
incrementedResult = incrementedNumbersIterator.next();
}
இங்கே, எண்களின் வரிசையை வழங்கும் generateNumbers என்ற ஜெனரேட்டர் செயல்பாட்டை வரையறுக்கிறோம். பின்னர் ஒவ்வொரு எண்ணையும் 1 ஆல் அதிகரித்து வழங்கும் ஒரு புதிய இட்டரேட்டரை உருவாக்க map ஐப் பயன்படுத்துகிறோம்.
எடுத்துக்காட்டு 4: ஒரு API இலிருந்து தரவு செயலாக்கம் (உருவகப்படுத்தப்பட்டது)
firstName மற்றும் lastName போன்ற புலங்களுடன் பயனர் பொருள்களைத் தரும் ஒரு API இலிருந்து தரவைப் பெறுவதை கற்பனை செய்து பாருங்கள். முழுப் பெயர்களை வழங்கும் ஒரு புதிய இட்டரேட்டரை நீங்கள் உருவாக்க விரும்பலாம்.
// உருவகப்படுத்தப்பட்ட API தரவு (உண்மையான API அழைப்புடன் மாற்றவும்)
const users = [
{ id: 1, firstName: "Giovanni", lastName: "Rossi" },
{ id: 2, firstName: "Sakura", lastName: "Yamamoto" },
{ id: 3, firstName: "Kenzo", lastName: "Okonkwo" },
];
function* userGenerator(users) {
for (const user of users) {
yield user;
}
}
const userIterator = userGenerator(users);
const fullNamesIterator = map(userIterator, (user) => `${user.firstName} ${user.lastName}`);
// இட்டரேட்டரைப் பயன்படுத்தி முழுப் பெயர்களையும் பதிவு செய்யவும்
let fullNameResult = fullNamesIterator.next();
while (!fullNameResult.done) {
console.log(fullNameResult.value); // வெளியீடு: Giovanni Rossi, Sakura Yamamoto, Kenzo Okonkwo
fullNameResult = fullNamesIterator.next();
}
இந்த எடுத்துக்காட்டு, ஒரு வெளிப்புற மூலத்திலிருந்து பெறப்பட்ட தரவைச் செயலாக்க map எவ்வாறு பயன்படுத்தப்படலாம் என்பதைக் காட்டுகிறது. எளிமைக்காக API பதில் இங்கே போலியாக உருவாக்கப்பட்டுள்ளது, ஆனால் இந்த கொள்கை நிஜ உலக API தொடர்புகளுக்கும் பொருந்தும். இந்த எடுத்துக்காட்டு உலகளாவிய பயன்பாட்டைப் பிரதிபலிக்கும் வகையில் வேண்டுமென்றே பலதரப்பட்ட பெயர்களைப் பயன்படுத்துகிறது.
map இட்டரேட்டர் ஹெல்பரைப் பயன்படுத்துவதன் நன்மைகள்
- மேம்படுத்தப்பட்ட குறியீட்டு வாசிப்புத்திறன்:
mapஒரு பிரகடன நிரலாக்க பாணியை ஊக்குவிக்கிறது, இது உங்கள் குறியீட்டைப் புரிந்துகொள்வதையும் பகுத்தறிவதையும் எளிதாக்குகிறது. - மேம்படுத்தப்பட்ட குறியீட்டு பராமரிப்புத்திறன்:
mapஉடனான செயல்பாட்டு மாற்றங்கள் மேலும் மட்டு மற்றும் சோதிக்கக்கூடிய குறியீட்டிற்கு வழிவகுக்கிறது. மாற்று தர்க்கத்தில் செய்யப்படும் மாற்றங்கள் தனிமைப்படுத்தப்பட்டு, அசல் தரவு மூலத்தைப் பாதிக்காது. - அதிகரித்த செயல்திறன்: இட்டரேட்டர்கள் தரவு ஓட்டங்களை சோம்பேறித்தனமாகச் செயலாக்க உங்களை அனுமதிக்கின்றன, அதாவது மதிப்புகள் தேவைப்படும்போது மட்டுமே கணக்கிடப்படுகின்றன. பெரிய தரவுத்தொகுப்புகளுடன் பணிபுரியும்போது இது செயல்திறனை கணிசமாக மேம்படுத்தும்.
- செயல்பாட்டு நிரலாக்க முன்னுதாரணம்:
mapசெயல்பாட்டு நிரலாக்கக் கொள்கைகளுடன் ஒத்துப்போகிறது, மாற்றமின்மை மற்றும் தூய செயல்பாடுகளை ஊக்குவிக்கிறது.
கருத்தில் கொள்ள வேண்டியவை மற்றும் சிறந்த நடைமுறைகள்
- பிழை கையாளுதல்: எதிர்பாராத உள்ளீட்டு மதிப்புகளை நேர்த்தியாகக் கையாள உங்கள்
transformசெயல்பாட்டில் பிழை கையாளுதலைச் சேர்ப்பதைக் கவனியுங்கள். - செயல்திறன்: இட்டரேட்டர்கள் சோம்பேறித்தனமான மதிப்பீட்டை வழங்கினாலும், சிக்கலான மாற்றுச் செயல்பாடுகளின் செயல்திறன் தாக்கங்கள் குறித்து கவனமாக இருங்கள். சாத்தியமான தடைகளைக் கண்டறிய உங்கள் குறியீட்டை சுயவிவரப்படுத்துங்கள்.
- நூலக மாற்றுகள்: Lodash, Underscore.js, மற்றும் IxJS போன்ற நூலகங்களை முன் கட்டப்பட்ட இட்டரேட்டர் பயன்பாடுகளுக்காக ஆராயுங்கள், இதில் மேலும் அதிநவீன மேப்பிங் திறன்களும் அடங்கும்.
- சங்கிலித் தொடராக்கம்: மிகவும் சிக்கலான தரவு செயலாக்க வழிமுறைகளுக்கு, பல இட்டரேட்டர் ஹெல்பர்களை ஒன்றாக இணைப்பதைக் கவனியுங்கள் (எ.கா.,
filterஐத் தொடர்ந்துmap).
தரவு மாற்றத்திற்கான உலகளாவிய பரிசீலனைகள்
பலதரப்பட்ட மூலங்களிலிருந்து வரும் தரவுகளுடன் பணிபுரியும்போது, உலகளாவிய கண்ணோட்டங்களைக் கருத்தில் கொள்வது அவசியம்:
- தேதி மற்றும் நேர வடிவங்கள்: உங்கள் மாற்று தர்க்கம் உலகம் முழுவதும் பயன்படுத்தப்படும் வெவ்வேறு தேதி மற்றும் நேர வடிவங்களைச் சரியாகக் கையாளுகிறது என்பதை உறுதிப்படுத்தவும். வலுவான தேதி மற்றும் நேரக் கையாளுதலுக்கு Moment.js அல்லது Luxon போன்ற நூலகங்களைப் பயன்படுத்தவும்.
- நாணய மாற்று: உங்கள் தரவுகளில் நாணய மதிப்புகள் இருந்தால், துல்லியமான மாற்றங்களை உறுதிப்படுத்த நம்பகமான நாணய மாற்று API ஐப் பயன்படுத்தவும்.
- மொழி மற்றும் உள்ளூர்மயமாக்கல்: நீங்கள் உரைத் தரவை மாற்றினால், வெவ்வேறு மொழிகள் மற்றும் எழுத்துக்குறி குறியாக்கங்கள் குறித்து கவனமாக இருங்கள். பல மொழிகளை ஆதரிக்க சர்வதேசமயமாக்கல் (i18n) நூலகங்களைப் பயன்படுத்தவும்.
- எண் வடிவங்கள்: வெவ்வேறு பிராந்தியங்கள் எண்களைக் காண்பிக்க வெவ்வேறு மரபுகளைப் பயன்படுத்துகின்றன (எ.கா., தசமப் பிரிப்பான்கள் மற்றும் ஆயிரக்கணக்கான பிரிப்பான்கள்). உங்கள் மாற்று தர்க்கம் இந்த மாறுபாடுகளைச் சரியாகக் கையாளுகிறது என்பதை உறுதிப்படுத்தவும்.
முடிவுரை
ஜாவாஸ்கிரிப்டில் செயல்பாட்டு தரவு மாற்றத்திற்கான ஒரு சக்திவாய்ந்த கருவி map இட்டரேட்டர் ஹெல்பர் ஆகும். இட்டரேட்டர்களைப் புரிந்துகொண்டு செயல்பாட்டு நிரலாக்கக் கொள்கைகளை ஏற்றுக்கொள்வதன் மூலம், நீங்கள் மேலும் படிக்கக்கூடிய, பராமரிக்கக்கூடிய, மற்றும் திறமையான குறியீட்டை எழுத முடியும். பலதரப்பட்ட மூலங்களிலிருந்து தரவுகளுடன் பணிபுரியும்போது துல்லியமான மற்றும் கலாச்சார ரீதியாக உணர்திறன் வாய்ந்த மாற்றங்களை உறுதிசெய்ய உலகளாவிய கண்ணோட்டங்களைக் கருத்தில் கொள்ள நினைவில் கொள்ளுங்கள். வழங்கப்பட்ட எடுத்துக்காட்டுகளுடன் பரிசோதனை செய்து, இட்டரேட்டர் அடிப்படையிலான தரவு செயலாக்கத்தின் முழுத் திறனையும் திறக்க ஜாவாஸ்கிரிப்ட் நூலகங்களில் கிடைக்கும் இட்டரேட்டர் பயன்பாடுகளின் செல்வத்தை ஆராயுங்கள்.