ഒരു JavaScript അറേയിൽ നിന്ന് തനിപ്പകർപ്പുകൾ നീക്കംചെയ്യുന്നു

ഒരു JavaScript അറേയിൽ നിന്ന് തനിപ്പകർപ്പുകൾ നീക്കംചെയ്യുന്നു
ഒരു JavaScript അറേയിൽ നിന്ന് തനിപ്പകർപ്പുകൾ നീക്കംചെയ്യുന്നു

ജാവാസ്ക്രിപ്റ്റിലെ അറേ യുണീക്നെസ് മനസ്സിലാക്കുന്നു

JavaScript-ൽ, ഒരു അറേയിൽ അദ്വിതീയ മൂല്യങ്ങൾ മാത്രമേ അടങ്ങിയിട്ടുള്ളൂ എന്ന് ഉറപ്പാക്കുന്നത് വിവിധ ആപ്ലിക്കേഷനുകൾക്ക് നിർണായകമാണ്. ഇത് നേടുന്നതിന് ഒന്നിലധികം മാർഗങ്ങളുണ്ടെങ്കിലും, പൂജ്യങ്ങളുടെ സാന്നിധ്യം പോലെയുള്ള പ്രത്യേക വ്യവസ്ഥകളിൽ ചില രീതികൾ പരാജയപ്പെടാം.

ഈ ലേഖനത്തിൽ, ഒരു അറേയിൽ നിന്ന് ഡ്യൂപ്ലിക്കേറ്റുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള ഒരു പ്രോട്ടോടൈപ്പ് സ്ക്രിപ്റ്റ് ഞങ്ങൾ പരിശോധിക്കും. പൂജ്യം മൂല്യങ്ങളുള്ള പ്രശ്‌നങ്ങൾ ഞങ്ങൾ തിരിച്ചറിയുകയും കൂടുതൽ വിശ്വസനീയമായ പരിഹാരവുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യും. ഈ വ്യത്യാസങ്ങൾ മനസ്സിലാക്കുന്നതിലൂടെ, JavaScript-ൽ അറേ തനത്ത്വം എങ്ങനെ കൂടുതൽ ഫലപ്രദമായി കൈകാര്യം ചെയ്യാമെന്ന് നിങ്ങൾ പഠിക്കും.

കമാൻഡ് വിവരണം
new Set() ഏത് തരത്തിലുമുള്ള അദ്വിതീയ മൂല്യങ്ങൾ സംഭരിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ഒരു സെറ്റ് ഒബ്‌ജക്റ്റ് സൃഷ്‌ടിക്കുന്നു.
[...new Set(array)] ഒരു സെറ്റ് തിരികെ തനതായ മൂല്യങ്ങളുടെ ഒരു ശ്രേണിയിലേക്ക് പരിവർത്തനം ചെയ്യാൻ സ്‌പ്രെഡ് ഓപ്പറേറ്റർ ഉപയോഗിക്കുന്നു.
Array.prototype.getUnique അറേയിൽ നിന്ന് തനതായ മൂല്യങ്ങൾ എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യുന്നതിന് അറേ പ്രോട്ടോടൈപ്പിലെ ഒരു പുതിയ രീതി നിർവചിക്കുന്നു.
uniqueElements[this[i]] = this[i] അദ്വിതീയത ഉറപ്പാക്കാൻ ഓരോ ഘടകങ്ങളും ഒരു ഒബ്‌ജക്റ്റിൽ ഒരു താക്കോലായി സംഭരിക്കുന്നു.
for (let key in uniqueElements) ഫല അറേ നിർമ്മിക്കുന്നതിന് യുണീക് എലമെൻ്റ് ഒബ്‌ജക്റ്റിൻ്റെ കീകൾക്ക് മുകളിലൂടെ ആവർത്തിക്കുന്നു.
const uniqueElements = {} അദ്വിതീയ ഘടകങ്ങൾ കീകളായി സംഭരിക്കുന്നതിന് ഒരു ശൂന്യമായ ഒബ്‌ജക്റ്റ് ആരംഭിക്കുന്നു.

JavaScript അറേകളിലെ തനിപ്പകർപ്പുകൾ എങ്ങനെ നീക്കംചെയ്യാം

ഞങ്ങൾ അവതരിപ്പിച്ച ആദ്യ സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു new Set() അറേ അദ്വിതീയത ഉറപ്പാക്കാൻ JavaScript-ൽ ഒബ്ജക്റ്റ്. എ Set ഓരോ മൂല്യവും അദ്വിതീയമായിരിക്കണം എന്ന മൂല്യങ്ങളുടെ ഒരു ശേഖരമാണ്. a യിലേക്ക് ഒരു അറേ കടന്നുപോകുന്നതിലൂടെ Set, ഡ്യൂപ്ലിക്കേറ്റ് മൂല്യങ്ങൾ ഞങ്ങൾ സ്വയമേവ ഫിൽട്ടർ ചെയ്യുന്നു. പരിവർത്തനം ചെയ്യാൻ Set ഒരു അറേയിലേക്ക് തിരികെ, ഞങ്ങൾ സ്പ്രെഡ് ഓപ്പറേറ്റർ ഉപയോഗിക്കുന്നു [...new Set(array)]. ഈ രീതി സംക്ഷിപ്തമാണ്, ആവശ്യമുള്ള ഫലം കാര്യക്ഷമമായി നേടുന്നതിന് JavaScript-ൻ്റെ അന്തർനിർമ്മിത പ്രവർത്തനങ്ങളെ സ്വാധീനിക്കുന്നു.

ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് പൂജ്യങ്ങൾ ഉൾപ്പെടെ ഡ്യൂപ്ലിക്കേറ്റ് നമ്പറുകളുള്ള ഒരു അറേ ഉണ്ടെങ്കിൽ [1, 2, 2, 3, 4, 4, 5, 0, 0], പ്രവർത്തനം getUniqueValues(array) അദ്വിതീയ മൂല്യങ്ങൾ മാത്രമുള്ള ഒരു അറേ തിരികെ നൽകും: [1, 2, 3, 4, 5, 0]. ഈ രീതി ലളിതവും പൂജ്യങ്ങൾ ഉൾപ്പെടെ എല്ലാത്തരം ഘടകങ്ങളും ഒരു പ്രശ്നവുമില്ലാതെ കൈകാര്യം ചെയ്യുന്നു.

തനതായ അറേ മൂല്യങ്ങൾ ഉറപ്പാക്കുന്നതിനുള്ള ഒരു ഇഷ്‌ടാനുസൃത രീതി

രണ്ടാമത്തെ സ്ക്രിപ്റ്റ് ഒരു ഇഷ്‌ടാനുസൃത രീതി നിർവചിക്കുന്നു Array.prototype വിളിച്ചു getUnique. അദ്വിതീയ ഘടകങ്ങൾ ട്രാക്കുചെയ്യുന്നതിന് ഈ രീതി ഒരു ഒബ്ജക്റ്റ് ഉപയോഗിക്കുന്നു. രീതിക്കുള്ളിൽ, ഞങ്ങൾ ആദ്യം ഒരു ശൂന്യമായ ഒബ്ജക്റ്റ് ആരംഭിക്കുന്നു const uniqueElements = {} ശൂന്യമായ ഒരു നിരയും const resultArray = []. അതിനുശേഷം ഞങ്ങൾ a ഉപയോഗിച്ച് അറേയിൽ ആവർത്തിക്കുന്നു for ലൂപ്പ്, ഓരോ മൂലകവും ഒരു കീ ആയി സംഭരിക്കുന്നു uniqueElements എല്ലാ കീകളും അദ്വിതീയമാണെന്ന് ഉറപ്പാക്കാൻ ഒബ്ജക്റ്റ്.

ജനവാസത്തിന് ശേഷം uniqueElements വസ്തു, ഞങ്ങൾ മറ്റൊന്ന് ഉപയോഗിക്കുന്നു for...in ഒബ്‌ജക്‌റ്റിൻ്റെ കീകൾക്ക് മുകളിലൂടെ ആവർത്തിക്കാനും ഓരോ അദ്വിതീയ കീയും അതിലേക്ക് തള്ളാനും ലൂപ്പ് ചെയ്യുക resultArray. ഒടുവിൽ, രീതി തിരിച്ചുവരുന്നു resultArray, അതുല്യമായ മൂല്യങ്ങൾ മാത്രം അടങ്ങിയിരിക്കുന്നു. ബിൽറ്റ്-ഇൻ ഫംഗ്‌ഷനുകളെ മാത്രം ആശ്രയിക്കാതെ, JavaScript-ൽ ഡാറ്റാ ഘടനകൾ കൈകാര്യം ചെയ്യുന്നതിനെ കുറിച്ച് ആഴത്തിലുള്ള ധാരണ നൽകിക്കൊണ്ട്, അതുല്യത എങ്ങനെ മാനുവലായി കൈകാര്യം ചെയ്യാമെന്നും നടപ്പിലാക്കാമെന്നും കാണിക്കുന്നതിനാൽ ഈ രീതി പ്രത്യേകിച്ചും പ്രബോധനാത്മകമാണ്.

ജാവാസ്ക്രിപ്റ്റ് അറേകളിൽ അദ്വിതീയ മൂല്യങ്ങൾ ഉറപ്പാക്കുന്നു

സെറ്റുകൾ ഉപയോഗിക്കുന്ന ജാവാസ്ക്രിപ്റ്റ് രീതി

function getUniqueValues(array) {
  return [...new Set(array)];
}

// Example usage:
const numbers = [1, 2, 2, 3, 4, 4, 5, 0, 0];
const uniqueNumbers = getUniqueValues(numbers);
console.log(uniqueNumbers);

ഒരു ഇഷ്‌ടാനുസൃത ഫംഗ്‌ഷനുള്ള ഒരു അറേയിലെ തനിപ്പകർപ്പുകൾ നീക്കംചെയ്യുന്നു

JavaScript കസ്റ്റം പ്രോട്ടോടൈപ്പ് രീതി

Array.prototype.getUnique = function() {
  const uniqueElements = {};
  const resultArray = [];
  for (let i = 0; i < this.length; i++) {
    uniqueElements[this[i]] = this[i];
  }
  for (let key in uniqueElements) {
    resultArray.push(uniqueElements[key]);
  }
  return resultArray;
};

// Example usage:
const numbers = [1, 2, 2, 3, 4, 4, 5, 0, 0];
const uniqueNumbers = numbers.getUnique();
console.log(uniqueNumbers);

അറേ ഡ്യൂപ്ലിക്കേഷൻ ടെക്നിക്കുകളിലേക്ക് ആഴത്തിൽ മുങ്ങുക

ജാവാസ്ക്രിപ്റ്റിലെ ഒരു അറേയിൽ നിന്ന് ഡ്യൂപ്ലിക്കേറ്റുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള മറ്റൊരു പ്രധാന സാങ്കേതികതയാണ് filter എന്ന സംയോജനത്തിൽ രീതി indexOf രീതി. അറേയ്‌ക്ക് മുകളിലൂടെ ആവർത്തിക്കുന്നതും അവയുടെ നിലവിലെ സ്ഥാനവുമായി പൊരുത്തപ്പെടുന്ന ആദ്യ സംഭവങ്ങൾ മാത്രം ഉൾപ്പെടുത്തുന്നതും ഈ രീതിയിൽ ഉൾപ്പെടുന്നു. തത്ഫലമായുണ്ടാകുന്ന അറേയിൽ ഓരോ ഘടകവും ഒരിക്കൽ മാത്രമേ ഉൾപ്പെടുത്തിയിട്ടുള്ളൂവെന്ന് ഇത് ഉറപ്പാക്കുന്നു, ഡ്യൂപ്ലിക്കേറ്റുകൾ ഫലപ്രദമായി നീക്കംചെയ്യുന്നു.

ഉദാഹരണത്തിന്, ഒരു അറേ പരിഗണിക്കുക [1, 2, 2, 3, 4, 4, 5, 0, 0]. ഉപയോഗിച്ച് array.filter((item, index) => array.indexOf(item) === index), നിങ്ങൾക്ക് ഡ്യൂപ്ലിക്കേറ്റ് മൂല്യങ്ങൾ ഫിൽട്ടർ ചെയ്യാം. നിലവിലെ മൂലകത്തിൻ്റെ സൂചികയും ആ മൂലകത്തിൻ്റെ ആദ്യ സംഭവ സൂചികയും സമാനമാണോ എന്ന് പരിശോധിച്ച് ഈ സമീപനം പ്രവർത്തിക്കുന്നു. അങ്ങനെയാണെങ്കിൽ, ഘടകം അദ്വിതീയവും പുതിയ അറേയിൽ ഉൾപ്പെടുത്തുന്നതുമാണ്.

JavaScript അറേ ഡ്യൂപ്ലിക്കേഷനെക്കുറിച്ചുള്ള പൊതുവായ ചോദ്യങ്ങൾ

  1. ഒരു അറേയിൽ നിന്ന് ഡ്യൂപ്ലിക്കേറ്റുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള ഏറ്റവും കാര്യക്ഷമമായ മാർഗം ഏതാണ്?
  2. എ ഉപയോഗിക്കുന്നത് Set O(n) ൻ്റെ സമയ സങ്കീർണ്ണത ഉള്ളതിനാൽ ഏറ്റവും കാര്യക്ഷമമായ മാർഗ്ഗങ്ങളിലൊന്നാണ്.
  3. എനിക്ക് ഉപയോഗിക്കാമോ filter തനിപ്പകർപ്പുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള രീതി?
  4. അതെ, സംയോജിപ്പിക്കുന്നു filter കൂടെ indexOf ഡ്യൂപ്ലിക്കേറ്റുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള ഒരു സാധാരണ സമീപനമാണ്.
  5. എന്തുകൊണ്ട് ചെയ്യുന്നു prototype പൂജ്യം കൊണ്ട് രീതി പരാജയപ്പെടുമോ?
  6. ഒറിജിനൽ സ്ക്രിപ്റ്റ് പൂജ്യത്തിൽ പരാജയപ്പെടുന്നതിനാൽ for (i = 0; e = this[i]; i++) പൂജ്യത്തിൽ നിർത്തുന്നു, അത് തെറ്റായി വ്യാഖ്യാനിക്കുന്നു.
  7. അദ്വിതീയതയ്‌ക്കായി ഒരു അറേയിലെ വിവിധ ഡാറ്റ തരങ്ങൾ എങ്ങനെ കൈകാര്യം ചെയ്യാം?
  8. എ ഉപയോഗിക്കുന്നത് Set ഓരോ മൂല്യവും അദ്വിതീയമാണെന്ന് ഉറപ്പാക്കിക്കൊണ്ട് വ്യത്യസ്ത ഡാറ്റ തരങ്ങൾ കാര്യക്ഷമമായി കൈകാര്യം ചെയ്യുന്നു.
  9. ഉപയോഗിക്കുന്നതിൻ്റെ പ്രയോജനം എന്താണ് new Set() മറ്റ് രീതികളേക്കാൾ?
  10. new Set() സംക്ഷിപ്തമാണ് കൂടാതെ അധിക യുക്തി ആവശ്യമില്ലാതെ എല്ലാ തരത്തിലുള്ള മൂല്യങ്ങളും കൈകാര്യം ചെയ്യുന്നു.
  11. എനിക്ക് എല്ലാ അറേകളിലേക്കും തനതായ രീതി ചേർക്കാമോ?
  12. അതെ, എന്നതിലേക്ക് ഒരു രീതി ചേർത്തുകൊണ്ട് Array.prototype, നിങ്ങൾക്ക് ഇത് എല്ലാ അറേകൾക്കും ലഭ്യമാക്കാൻ കഴിയും.
  13. പരിഷ്ക്കരിക്കുന്നതിൻ്റെ പോരായ്മ എന്താണ് Array.prototype?
  14. പരിഷ്ക്കരിക്കുന്നു Array.prototype മറ്റ് സ്ക്രിപ്റ്റുകളും ഇത് പരിഷ്കരിച്ചാൽ അത് വൈരുദ്ധ്യങ്ങളിലേക്ക് നയിച്ചേക്കാം.
  15. ഒറിജിനൽ അറേ മാറ്റാതെ തന്നെ അദ്വിതീയത ഉറപ്പാക്കാൻ എന്തെങ്കിലും വഴിയുണ്ടോ?
  16. അതെ, പോലുള്ള രീതികൾ new Set() ഒപ്പം filter ഒറിജിനൽ സംരക്ഷിച്ചുകൊണ്ട് ഒരു പുതിയ അറേ സൃഷ്ടിക്കുക.

JavaScript അറേ ഡ്യൂപ്ലിക്കേഷനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ

അറേകളിൽ നിന്ന് ഡ്യൂപ്ലിക്കേറ്റുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള വ്യത്യസ്‌ത സാങ്കേതിക വിദ്യകൾ മനസ്സിലാക്കുന്നതിലൂടെ, നിങ്ങളുടെ നിർദ്ദിഷ്ട ഉപയോഗ സാഹചര്യത്തിന് ഏറ്റവും അനുയോജ്യമായ രീതി നിങ്ങൾക്ക് തിരഞ്ഞെടുക്കാം. ഉപയോഗിച്ചാലും Set ലാളിത്യത്തിനും കാര്യക്ഷമതയ്ക്കും അല്ലെങ്കിൽ ആഴത്തിലുള്ള ധാരണയ്ക്കായുള്ള ഇഷ്‌ടാനുസൃത രീതികൾക്കും, ഈ സമീപനങ്ങളിൽ പ്രാവീണ്യം നേടുന്നത് നിങ്ങളുടെ JavaScript കഴിവുകൾ വർദ്ധിപ്പിക്കുന്നു. പൂജ്യം മൂല്യങ്ങൾ പോലെയുള്ള പ്രത്യേക കേസുകൾ കൈകാര്യം ചെയ്യുന്നത് നിങ്ങളുടെ പരിഹാരങ്ങളിൽ കരുത്തുറ്റത ഉറപ്പാക്കുന്നു.