ஒரு குறிப்பிட்ட குறியீட்டிலிருந்து ஜாவாஸ்கிரிப்ட் வரிசையை வரைபடமாக்குவதற்கான அளவுகோல்களை எவ்வாறு பயன்படுத்துவது

Map

அட்டவணை மற்றும் நிபந்தனைகளின் அடிப்படையில் வரிசை மேப்பிங்குடன் பணிபுரிதல்

உடன் பணிபுரியும் போது , குறிப்பிட்ட குறியீட்டிலிருந்து தொடங்கும் உறுப்புகளில் மட்டும் கவனம் செலுத்துவதன் மூலம் நீங்கள் சில நேரங்களில் தரவை மாற்ற வேண்டியிருக்கலாம். போன்ற முறைகளைப் பயன்படுத்துதல் டெவலப்பர்கள் வரிசைகள் மூலம் திறம்பட செயல்பட மற்றும் மாற்றங்களைப் பயன்படுத்த அனுமதிக்கிறது. இருப்பினும், நிபந்தனைகளின் அடிப்படையில் வடிகட்டும்போது சிறந்த அணுகுமுறையைத் தீர்மானிப்பது சில கேள்விகளுக்கு வழிவகுக்கும்.

இந்தக் கட்டுரையில், கொடுக்கப்பட்ட குறியீட்டிலிருந்து தொடங்கும் வரிசையை எவ்வாறு வரைபடமாக்குவது மற்றும் வரையறுக்கப்பட்ட அடிப்படையில் அதன் கூறுகளை வடிகட்டுவது எப்படி என்பதை ஆராய்வோம். . எடுத்துக்காட்டாக, ஒரு பொதுவான தேவை ஒரு குறிப்பிட்ட மதிப்பை விட சிறிய எண்களின் குறியீடுகளைப் பிரித்தெடுப்பதாகும். செயல்திறன் முக்கியத்துவம் வாய்ந்த பெரிய தரவுத்தொகுப்புகளுடன் பணிபுரியும் போது இந்த தலைப்பு மிகவும் முக்கியமானது.

வழங்கப்பட்ட குறியீடு துணுக்கைப் பயன்படுத்துவதற்கான முயற்சியைக் காட்டுகிறது இதை அடைய செயல்பாடு. இருப்பினும், டெவலப்பர்கள் அடிக்கடி ஆச்சரியப்படுகிறார்கள் இந்த பணிக்கு மிகவும் பொருத்தமான தேர்வு அல்லது திறமையான மாற்றுகள் இருந்தால். சிறந்த அணுகுமுறையை நோக்கி உங்களை வழிநடத்த சிக்கலை நாங்கள் பகுப்பாய்வு செய்வோம்.

இந்த விவாதத்தின் முடிவில், இரண்டின் அடிப்படையில் வரிசைகளை எவ்வாறு கையாள்வது என்பது பற்றி நீங்கள் நன்கு புரிந்துகொள்வீர்கள் மற்றும் மதிப்பு அடிப்படையிலான நிபந்தனைகள். சிறந்த செயல்திறனை வழங்கக்கூடிய மாற்று வழிகளையும் நாங்கள் பார்ப்போம், குறிப்பாக .

கட்டளை பயன்பாட்டின் உதாரணம்
Array.slice() ஒரு குறிப்பிட்ட குறியீட்டிலிருந்து தொடங்கும் வரிசையின் ஒரு பகுதியின் மேலோட்டமான நகலை உருவாக்கப் பயன்படுகிறது. இந்த எடுத்துக்காட்டில், இது குறியீட்டு 1 முதல் தனிமங்களை தனிமைப்படுத்துகிறது: array.slice(1) தனிமங்களை பிரித்தெடுக்கிறது [2, 8, 3, 4, 6].
Array.map() This command transforms each element of the array. It’s used to return either the element's index or -1 depending on the condition. Example: array.map((x, i) =>இந்த கட்டளை அணிவரிசையின் ஒவ்வொரு உறுப்புகளையும் மாற்றுகிறது. நிபந்தனையைப் பொறுத்து உறுப்பு குறியீட்டு அல்லது -1 ஐ வழங்க இது பயன்படுகிறது. எடுத்துக்காட்டு: array.map((x, i) => (x
Array.filter() Removes unwanted elements from the transformed array. For example, filter(i =>மாற்றப்பட்ட வரிசையிலிருந்து தேவையற்ற கூறுகளை நீக்குகிறது. எடுத்துக்காட்டாக, வடிகட்டி(i => i !== -1) வரைபடம்() செயல்பாட்டிற்குப் பிறகு சரியான குறியீடுகள் மட்டுமே தக்கவைக்கப்படுவதை உறுதி செய்கிறது.
for loop மறு செய்கையின் மீது நுண்ணிய கட்டுப்பாட்டை வழங்கும் ஒரு உன்னதமான வளைய அமைப்பு. இந்தச் சிக்கலில், இது குறிப்பிட்ட தொடக்கக் குறியீட்டில் இருந்து மீண்டும் வருகிறது: (நான் = startIndex; i
Array.reduce() Used to accumulate results into a single array based on conditions. Here, it collects indexes of elements matching the criteria: array.reduce((acc, val, i) => { if (i >நிபந்தனைகளின் அடிப்படையில் முடிவுகளை ஒற்றை அணிவரிசையாகக் குவிக்கப் பயன்படுகிறது. இங்கே, இது அளவுகோல்களுடன் பொருந்தக்கூடிய உறுப்புகளின் குறியீடுகளை சேகரிக்கிறது: array.reduce((acc, val, i) => { if (i >= 1 && val
Jest A testing function from the Jest framework that defines individual test cases. Example: test('Approach 1: Slice and Map', () =>தனிப்பட்ட சோதனை நிகழ்வுகளை வரையறுக்கும் ஜெஸ்ட் கட்டமைப்பிலிருந்து ஒரு சோதனை செயல்பாடு. எடுத்துக்காட்டு: சோதனை('அணுகுமுறை 1: துண்டு மற்றும் வரைபடம்', () => { ... }).
Jest ஜெஸ்ட் சோதனையில் எதிர்பார்க்கப்படும் முடிவைக் குறிப்பிடுகிறது. உதாரணம்: expect(result).toEqual([1, 3, 4, 5]) வெளியீடு எதிர்பார்த்த வரிசையுடன் பொருந்துவதை உறுதி செய்கிறது.
accumulator in reduce() தி அளவுருக்கள் திரட்டப்பட்ட முடிவுகளை சேமிக்கிறது. எங்கள் விஷயத்தில், இது மறு செய்கையின் போது செல்லுபடியாகும் குறியீடுகளை சேகரிக்கிறது: குறைக்க() செயல்பாட்டிற்குள் acc.push(i).
Node.js Node.js இல் தொகுதிகளை இறக்குமதி செய்யப் பயன்படுகிறது. இங்கே, இது ஜெஸ்ட் செயல்பாடுகளை ஏற்றுகிறது: const {test, expect } = require('@jest/globals');.

ஜாவாஸ்கிரிப்டில் ஒரு குறிப்பிட்ட குறியீட்டிலிருந்து மேப்பிங் வரிசைகளில் ஆழமாக மூழ்கவும்

முதல் ஸ்கிரிப்ட் பயன்பாட்டை நிரூபிக்கிறது இணைந்து . இந்த அணுகுமுறை ஒரு குறிப்பிட்ட குறியீட்டிலிருந்து தொடங்கி அசல் வரிசையின் ஒரு பகுதியைப் பிரித்தெடுக்க உதவுகிறது, பின்னர் கொடுக்கப்பட்ட நிபந்தனையின் அடிப்படையில் மீதமுள்ள கூறுகளை வரைபடமாக்குகிறது. ஸ்லைஸ் முறையானது, தேர்ந்தெடுக்கப்பட்ட தொடக்கக் குறியீட்டிலிருந்து கூறுகள் மட்டுமே மேலும் செயலாக்கத்திற்குக் கருதப்படுவதை உறுதி செய்கிறது. வரைபடச் செயல்பாடு, ஒவ்வொரு மதிப்பையும் சரிபார்த்து, 8 க்கும் குறைவாக இருக்கும் அளவுகோல்களுடன் பொருந்தினால், அதன் குறியீட்டை வழங்குகிறது, அல்லது அது இல்லை என்றால்.

இரண்டாவது எடுத்துக்காட்டு பாரம்பரியத்தைப் பயன்படுத்தி அதிக செயல்திறன்-உகந்த அணுகுமுறையில் கவனம் செலுத்துகிறது . இங்கே, ஸ்கிரிப்ட் டெவலப்பர்களுக்கு விரும்பிய குறியீட்டிலிருந்து லூப்பை கைமுறையாகத் தொடங்குவதன் மூலம் மறு செய்கையின் மீது முழுமையான கட்டுப்பாட்டை வழங்குகிறது. இந்த அணுகுமுறை வரைபடம் மற்றும் வடிகட்டி போன்ற செயல்பாட்டு முறைகளுடன் தொடர்புடைய கூடுதல் மேல்நிலையைத் தவிர்க்கிறது. ஒவ்வொரு செல்லுபடியாகும் குறியீடும் நேரடியாக முடிவு வரிசையில் தள்ளப்படுகிறது. பெரிய வரிசைகளுடன் பணிபுரியும் போது இந்த முறையின் நன்மை தெளிவாகிறது, அங்கு செயல்பாடு அழைப்புகளைக் குறைப்பது செயல்திறனை கணிசமாக மேம்படுத்தும்.

மூன்றாவது தீர்வு ஒரு செயல்பாட்டு நிரலாக்க மாற்றீட்டைப் பயன்படுத்தி வழங்குகிறது . இந்த முறை ஒரே மாதிரியான முடிவுகளை அடைவதற்கான ஒரு சுருக்கமான வழியை வழங்கும், ஒரே வரிசையில் அளவுகோல்களை சந்திக்கும் குறியீடுகளை குவிக்கிறது. குறைக்கப்பட்ட செயல்பாடு குறிப்பிட்ட குறியீட்டிலிருந்து தொடங்கி ஒவ்வொரு உறுப்புக்கும் மீண்டும் மீண்டும் செல்கிறது, மேலும் உறுப்பு நிபந்தனையைப் பூர்த்தி செய்தால், அது குறியீட்டை திரட்டி வரிசையில் சேர்க்கிறது. வடிகட்டுதல் மற்றும் குவித்தல் ஆகிய இரண்டும் ஒரே பாஸில் தேவைப்படும் சிக்கலான மாற்றங்களுக்கு குறைக்கும் முறை மிகவும் பயனுள்ளதாக இருக்கும்.

கடைசியாக, இந்த தீர்வுகளை சரிபார்க்க அலகு சோதனை மிகவும் முக்கியமானது, குறிப்பாக வரிசை அளவு வளரும் அல்லது நிலைமைகள் மாறும் போது. உதாரணம் பயன்படுத்துகிறது தானியங்கு சோதனைகளை இயக்குவதற்கான கட்டமைப்பு, ஒவ்வொரு அணுகுமுறையும் பல்வேறு நிகழ்வுகளுக்கு சரியான வெளியீட்டை வழங்கும். சோதனையானது விளிம்பு நிலைகளை அடையாளம் காண உதவுகிறது மற்றும் குறியீடு வெவ்வேறு சூழ்நிலைகளில் செயல்படும் என்ற நம்பிக்கையை வழங்குகிறது. ஒவ்வொரு யூனிட் சோதனையும் ஸ்கிரிப்ட்கள் மூலம் திரும்பப்பெறும் குறியீடுகள் எதிர்பார்த்த வெளியீட்டுடன் பொருந்துமா என்பதைச் சரிபார்க்கிறது. இந்த விரிவான அணுகுமுறை, தேர்ந்தெடுக்கப்பட்ட முறையைப் பொருட்படுத்தாமல், செயல்திறன் மற்றும் சரியான தன்மை ஆகிய இரண்டும் அடையப்படுவதை உறுதி செய்கிறது.

பல அணுகுமுறைகளுடன் ஒரு குறிப்பிட்ட குறியீட்டிலிருந்து ஒரு வரிசையை வரைபடமாக்க ஜாவாஸ்கிரிப்டைப் பயன்படுத்துதல்

முன்னோட்ட ஜாவாஸ்கிரிப்ட் தீர்வு, டைனமிக் இன்டெக்ஸில் இருந்து வரிசை கையாளுதலில் கவனம் செலுத்துகிறது

// Approach 1: Using Array.slice() and Array.map() for Partial Mapping
const array = [4, 2, 8, 3, 4, 6];
const startIndex = 1;  // Starting index for filtering
const result = array.slice(startIndex).map((x, i) => (x < 8 ? i + startIndex : -1))
                .filter(index => index !== -1);
console.log(result);  // Output: [1, 3, 4, 5]
// This method uses slice() to extract the subarray from index 1
// and map() to find indexes of elements meeting the criteria.

செயல்திறனுக்கான லூப்களுடன் வரிசை மேப்பிங்கை மேம்படுத்துதல்

கூடுதல் செயல்பாட்டு அழைப்புகளைத் தவிர்க்கவும் செயல்திறனை மேம்படுத்தவும் for loop ஐப் பயன்படுத்துதல்

// Approach 2: Using a for loop for better control and optimization
const array = [4, 2, 8, 3, 4, 6];
const startIndex = 1;
const result = [];
for (let i = startIndex; i < array.length; i++) {
    if (array[i] < 8) result.push(i);
}
console.log(result);  // Output: [1, 3, 4, 5]
// This approach provides better performance with large arrays
// by avoiding the overhead of map() and filter().

Node.js மற்றும் செயல்பாட்டு பாணியைப் பயன்படுத்தி பின்தளம் சார்ந்த தீர்வு

செயல்பாட்டு நிரலாக்கத்தில் கவனம் செலுத்தும் Node.js பின்தள தீர்வு

// Approach 3: Functional approach using Array.reduce()
const array = [4, 2, 8, 3, 4, 6];
const startIndex = 1;
const result = array.reduce((acc, val, i) => {
    if (i >= startIndex && val < 8) acc.push(i);
    return acc;
}, []);
console.log(result);  // Output: [1, 3, 4, 5]
// Array.reduce() offers a concise and functional way to collect
// the indexes matching the criteria without additional filtering.

அனைத்து தீர்வுகளையும் சரிபார்க்க அலகு சோதனைகள்

Jest கட்டமைப்பைப் பயன்படுத்தி JavaScript தீர்வுகளுக்கான அலகு சோதனை

// Unit tests for all three approaches using Jest
const { test, expect } = require('@jest/globals');
const array = [4, 2, 8, 3, 4, 6];

test('Approach 1: Slice and Map', () => {
    const result = array.slice(1).map((x, i) => (x < 8 ? i + 1 : -1)).filter(i => i !== -1);
    expect(result).toEqual([1, 3, 4, 5]);
});

test('Approach 2: For Loop', () => {
    const result = [];
    for (let i = 1; i < array.length; i++) {
        if (array[i] < 8) result.push(i);
    }
    expect(result).toEqual([1, 3, 4, 5]);
});

test('Approach 3: Reduce', () => {
    const result = array.reduce((acc, val, i) => {
        if (i >= 1 && val < 8) acc.push(i);
        return acc;
    }, []);
    expect(result).toEqual([1, 3, 4, 5]);
});

ஜாவாஸ்கிரிப்டில் மேம்பட்ட வரிசை மேப்பிங் நுட்பங்களை ஆராய்தல்

பயன்பாட்டிற்கு அப்பாற்பட்ட ஒரு சுவாரஸ்யமான அணுகுமுறை அல்லது செல்வாக்கு செலுத்துகிறது நிலைமைகளின் அடிப்படையில் மாறும் வகையில் கூறுகளைக் கண்டறியும் முறை. இந்த முறை ஒரு குறிப்பிட்ட நிபந்தனையை பூர்த்தி செய்யும் முதல் குறியீட்டை வழங்குகிறது, நீங்கள் ஒரு வரிசையை வரைபடமாக்க வேண்டியிருக்கும் போது இது பயனுள்ளதாக இருக்கும், ஆனால் பொருத்தமான உறுப்பு கண்டுபிடிக்கப்பட்டவுடன் நிறுத்தப்படும். இது முழு வரிசையிலும் மீண்டும் செய்வதிலிருந்து சற்று வித்தியாசமாக இருந்தாலும், குறிப்பிட்ட பயன்பாட்டு நிகழ்வுகளுக்கு சிறப்பாகச் செயல்படும் ஒரு மாற்றீட்டை இது வழங்குகிறது, குறிப்பாக முதல் பொருந்தக்கூடிய குறியீடு மட்டுமே தேவைப்படும் போது.

வாசிப்புத்திறனை மேம்படுத்துவதற்கான மற்றொரு மாற்று . மேப்பிங் லாஜிக் ஒரு உள்ளீட்டிற்கு பல வெளியீடுகளை உருவாக்குவதை உள்ளடக்கியிருந்தால் அல்லது உள்ளமைக்கப்பட்ட முடிவுகளை ஒரு பரிமாண வரிசைகளில் சமன் செய்ய வேண்டும் என்றால் இந்த முறை மிகவும் உதவியாக இருக்கும். தரநிலைக்கு மாறாக , அதே நீளத்தின் வரிசையை வழங்கும், ஒரே பாஸில் மேப்பிங் மற்றும் தட்டையான செயல்பாடுகளை ஒருங்கிணைக்கிறது. இது பொதுவாகப் பயன்படுத்தப்படாவிட்டாலும், மிகவும் சிக்கலான சூழ்நிலைகளில் இது உங்கள் குறியீட்டை ஒழுங்குபடுத்தும்.

இறுதியாக, செயல்திறன் ஒரு முக்கிய கவலை என்றால், ஒரு கலப்பின அணுகுமுறை பயன்படுத்தி நிபந்தனை அடிப்படையிலான புஷ் லாஜிக்குடன் இணைந்து மறு செய்கைக்கு வேகம் மற்றும் எளிமை இரண்டையும் வழங்க முடியும். இது தேவையற்ற செயல்பாடு அழைப்புகளை நீக்குகிறது மற்றும் உங்கள் தர்க்கத்தை எளிமையாக வைத்திருக்கும். இருந்து ஒவ்வொருவருக்கும்() புதிய வரிசையை திரும்பப் பெறவில்லை, இலக்கு பக்க விளைவுகளாக இருக்கும்போது (வெளிப்புற வரிசையில் மதிப்புகளைச் சேர்ப்பது போன்றவை) சிறந்தது. குறிப்பாக பெரிய தரவுத்தொகுப்புகளுடன் பணிபுரியும் போது, ​​குறியீடு தெளிவை பராமரிக்கும் போது இந்த கலவையானது உயர் செயல்திறனை உறுதி செய்கிறது.

  1. எப்படி இருக்கிறது வேறுபட்டது ?
  2. அசல் வரிசையை மாற்றாமல் வரிசையின் ஒரு பகுதியை பிரித்தெடுக்கிறது அசல் ஒவ்வொரு உறுப்புகளையும் மாற்றுவதன் மூலம் ஒரு புதிய வரிசையை உருவாக்குகிறது.
  3. நான் எப்போது பயன்படுத்த வேண்டும் பதிலாக ?
  4. பயன்படுத்தவும் உங்களுக்கு சிறந்த செயல்திறன் தேவைப்படும் போது அல்லது தர்க்கம் கையாள கடினமாக இருக்கும் சிக்கலான நிலைமைகளை உள்ளடக்கியது .
  5. பயன்படுத்துவதால் என்ன பலன் ?
  6. மேப்பிங் மற்றும் தட்டையான செயல்பாடுகளை ஒன்றாக இணைக்க பயனுள்ளதாக இருக்கும், குறிப்பாக உள்ளமைக்கப்பட்ட அணிகளை கையாளும் போது.
  7. உள்ளது ஒரே நேரத்தில் வடிகட்டுவதற்கும் மேப்பிங்கிற்கும் ஏற்றதா?
  8. ஆம், ஒரே பாஸில் மேப்பிங் மற்றும் வடிகட்டுதல் அளவுகோல்களின் அடிப்படையில் முடிவுகளைக் குவிப்பதற்கான சிறந்த கருவியாகும்.
  9. எப்படி செய்கிறது செயல்திறனை மேம்படுத்தவா?
  10. பொருந்தக்கூடிய உறுப்பு கண்டுபிடிக்கப்பட்டவுடன் மறு செய்கையை நிறுத்துகிறது, உங்களுக்கு முதல் பொருந்தும் குறியீட்டு மட்டுமே தேவைப்படும்போது அதை வேகமாக்குகிறது.
  11. செய்கிறது போன்ற ஒரு புதிய அணியை திரும்ப ?
  12. இல்லை, பக்க விளைவுகளுக்காக வடிவமைக்கப்பட்டுள்ளது மற்றும் புதிய வரிசையை வழங்காது. ஒவ்வொரு உறுப்புகளையும் மாற்றாமல் மட்டுமே நீங்கள் செயல்பாடுகளைச் செய்ய வேண்டியிருக்கும் போது இது சிறந்தது.
  13. என்றால் என்ன நடக்கும் திரும்புகிறது ?
  14. உள்ளே ஒரு செயல்பாடு என்றால் திரும்புகிறது , முடிவு அடங்கும் அந்த நிலையில், இது சரியாகக் கையாளப்படாவிட்டால் திட்டமிடப்படாத நடத்தைக்கு வழிவகுக்கும்.
  15. நான் பயன்படுத்தலாமா பொருள்களில், அல்லது வரிசைகளில் மட்டும்?
  16. குறிப்பாக வரிசைகளுக்காக வடிவமைக்கப்பட்டுள்ளது. பொருள்களுடன் வேலை செய்ய, நீங்கள் பயன்படுத்த வேண்டும் அல்லது பொருளை மீண்டும் இயக்கக்கூடிய கட்டமைப்பாக மாற்ற.
  17. எப்படி செய்கிறது இணைந்து வேலை ?
  18. வரிசையிலிருந்து தேவையற்ற கூறுகளை நீக்குகிறது மீதமுள்ள உறுப்புகளை மாற்றுகிறது. இரண்டையும் இணைப்பது நிபந்தனைகளின் அடிப்படையில் துல்லியமான வெளியீட்டை உறுதி செய்கிறது.

ஒரு குறிப்பிட்ட குறியீட்டிலிருந்து ஒரு வரிசையை மேப்பிங் செய்தல் வடிகட்டப்பட்ட தரவுகளுடன் பணிபுரியும் போது டெவலப்பர்களுக்கு நெகிழ்வுத்தன்மையை வழங்குகிறது. பயன்பாடு , சுழல்களுக்கு, அல்லது குறைப்பு() செயல்திறன் மற்றும் குறியீட்டு தெளிவின் தேவையைப் பொறுத்தது. சரியான அணுகுமுறையைத் தேர்ந்தெடுப்பது மென்மையான, உகந்த அனுபவத்தை உறுதி செய்கிறது.

இந்த முறைகளை வடிகட்டுதலுடன் இணைப்பது பெரிய தரவுத்தொகுப்புகளை திறம்பட செயலாக்க உதவுகிறது. ஒவ்வொரு தீர்வையும் சோதிப்பது சரியான தன்மையை உறுதிப்படுத்துகிறது மற்றும் எதிர்பாராத விளைவுகளைத் தவிர்க்கிறது. கருவிகளின் சரியான தேர்வு மூலம், டெவலப்பர்கள் உயர் குறியீட்டு தரத்தை பராமரிக்கும் போது அதிக துல்லியத்துடன் தரவை கையாள முடியும்.

  1. பற்றிய தகவல்களை வழங்குகிறது ஜாவாஸ்கிரிப்டில் முறை மற்றும் அதன் பயன்பாட்டு நிகழ்வுகள். மேலும் விவரங்கள் கிடைக்கும் MDN Web Docs: Array.map() .
  2. பயன்படுத்துவதால் ஏற்படும் நன்மைகளை விளக்குகிறார் தரவு மாற்றங்களுக்கு. இல் மேலும் அறிக MDN Web Docs: Array.reduce() .
  3. பயன்பாட்டை உள்ளடக்கியது JavaScript இல் செயல்திறன் மேம்படுத்துதலுக்காக. வருகை freeCodeCamp: JavaScript For Loop Tutorial கூடுதல் எடுத்துக்காட்டுகளுக்கு.
  4. உடன் ஜாவாஸ்கிரிப்ட் செயல்பாடுகளைச் சோதிப்பதற்கான நுண்ணறிவுகளை வழங்குகிறது . மேலும் அணுகவும் ஜெஸ்ட் ஆவணம் .
  5. பற்றிய விரிவான வழிகாட்டியை வழங்குகிறது வரிசைகளில் இருந்து உறுப்புகளை வடிகட்டுவதற்கான முறை. அதை மேலும் ஆராயவும் MDN Web Docs: Array.filter() .