JavaScript Array Sort

JavaScript வரிசை வரிசைப்படுத்தல் பற்றி அறிக

JavaScript Array Sort

Alphabetic Sort

Numeric Sort

Complete JavaScript Array Reference

See Also:

Sorting an Array

sort() முறை ஒரு வரிசையை அகரவரிசையில் வரிசைப்படுத்துகிறது:

எடுத்துக்காட்டு

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

Reversing an Array

reverse() முறை ஒரு வரிசையில் உள்ள உறுப்புகளை தலைகீழாக மாற்றுகிறது:

எடுத்துக்காட்டு

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();

sort() மற்றும் reverse() ஆகியவற்றை இணைப்பதன் மூலம், நீங்கள் ஒரு வரிசையை இறங்கு வரிசையில் வரிசைப்படுத்தலாம்:

எடுத்துக்காட்டு

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

JavaScript Array toSorted() Method

ES2023 அசல் வரிசையை மாற்றாமல் ஒரு வரிசையை வரிசைப்படுத்த பாதுகாப்பான வழியாக toSorted() முறையைச் சேர்த்தது.

toSorted() மற்றும் sort() க்கு இடையே உள்ள வித்தியாசம் என்னவென்றால், முதல் முறை ஒரு புதிய வரிசையை உருவாக்குகிறது, அசல் வரிசையை மாறாமல் வைத்திருக்கிறது, அதே நேரத்தில் கடைசி முறை அசல் வரிசையை மாற்றியது.

எடுத்துக்காட்டு

const months = ["Jan", "Feb", "Mar", "Apr"];
const sorted = months.toSorted();

JavaScript Array toReversed() Method

ES2023 அசல் வரிசையை மாற்றாமல் ஒரு வரிசையை தலைகீழாக மாற்ற பாதுகாப்பான வழியாக toReversed() முறையைச் சேர்த்தது.

toReversed() மற்றும் reverse() க்கு இடையே உள்ள வித்தியாசம் என்னவென்றால், முதல் முறை ஒரு புதிய வரிசையை உருவாக்குகிறது, அசல் வரிசையை மாறாமல் வைத்திருக்கிறது, அதே நேரத்தில் கடைசி முறை அசல் வரிசையை மாற்றியது.

எடுத்துக்காட்டு

const months = ["Jan", "Feb", "Mar", "Apr"];
const reversed = months.toReversed();

Numeric Sort

இயல்பாக, sort() செயல்பாடு மதிப்புகளை சரங்களாக வரிசைப்படுத்துகிறது.

இது சரங்களுக்கு நன்றாக வேலை செய்கிறது ("Apple" "Banana" க்கு முன் வருகிறது).

எண்கள் சரங்களாக வரிசைப்படுத்தப்பட்டால், "25" "100" ஐ விட பெரியது, ஏனெனில் "2" "1" ஐ விட பெரியது.

இதன் காரணமாக, sort() முறை எண்களை வரிசைப்படுத்தும் போது தவறான முடிவை உருவாக்கும்.

நீங்கள் ஒரு ஒப்பீட்டு செயல்பாட்டை வழங்குவதன் மூலம் இதை சரிசெய்யலாம்:

எடுத்துக்காட்டு

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

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

எடுத்துக்காட்டு

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});

The Compare Function

ஒப்பீட்டு செயல்பாட்டின் நோக்கம் மாற்று வரிசை வரிசையை வரையறுப்பதாகும்.

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

function(a, b){return a - b}

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

எடுத்துக்காட்டு:

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

40 மற்றும் 100 ஐ ஒப்பிடும் போது, sort() முறை compare function(40, 100) ஐ அழைக்கிறது.

செயல்பாடு 40 - 100 (a - b) ஐக் கணக்கிடுகிறது, மேலும் முடிவு எதிர்மறையாக (-60) இருப்பதால், sort செயல்பாடு 40 ஐ 100 ஐ விட குறைந்த மதிப்பாக வரிசைப்படுத்தும்.

எண்ணியல் மற்றும் அகரவரிசையில் வரிசைப்படுத்துவதற்கு இந்த குறியீட்டுத் துண்டை நீங்கள் பயன்படுத்தலாம்:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;

function myFunction1() {
  points.sort();
  document.getElementById("demo").innerHTML = points;
}

function myFunction2() {
  points.sort(function(a, b){return a - b});
  document.getElementById("demo").innerHTML = points;
}
</script>

Sorting an Array in Random Order

மேலே விளக்கப்பட்டுள்ள ஒரு வரிசை செயல்பாட்டைப் பயன்படுத்தி, நீங்கள் ஒரு எண்ணியல் வரிசையை சீரற்ற வரிசையில் வரிசைப்படுத்தலாம்

எடுத்துக்காட்டு

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(){return 0.5 - Math.random()});

The Fisher Yates Method

மேலே உள்ள எடுத்துக்காட்டில் உள்ள points.sort() முறை துல்லியமானது அல்ல. இது சில எண்களை மற்றவற்றை விட விரும்பும்.

மிகவும் பிரபலமான சரியான முறை, Fisher Yates shuffle என்று அழைக்கப்படுகிறது, மேலும் 1938 ஆம் ஆண்டு தரவு அறிவியலில் அறிமுகப்படுத்தப்பட்டது!

JavaScript இல் இந்த முறை இதற்கு மொழிபெயர்க்கப்படலாம்:

எடுத்துக்காட்டு

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * (i+1));
  let k = points[i];
  points[i] = points[j];
  points[j] = k;
}

Find the Lowest (or Highest) Array Value

ஒரு வரிசையில் அதிகபட்ச அல்லது குறைந்தபட்ச மதிப்பைக் கண்டறிய உள்ளமைக்கப்பட்ட செயல்பாடுகள் இல்லை.

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

  1. வரிசையை வரிசைப்படுத்தி முதல் அல்லது கடைசி உறுப்பைப் படிக்கவும்
  2. Math.min() அல்லது Math.max() பயன்படுத்தவும்
  3. வீட்டில் தயாரிக்கப்பட்ட செயல்பாட்டை எழுதவும்

Find Min or Max with sort()

நீங்கள் ஒரு வரிசையை வரிசைப்படுத்திய பிறகு, அதிக மற்றும் குறைந்த மதிப்புகளைப் பெற குறியீட்டைப் பயன்படுத்தலாம்.

Sort Ascending:

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Sort Descending:

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

💡 குறிப்பு:

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

Using Math.min() on an Array

ஒரு வரிசையில் குறைந்த எண்ணைக் கண்டறிய Math.min.apply ஐப் பயன்படுத்தலாம்:

எடுத்துக்காட்டு

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

Math.min.apply(null, [1, 2, 3]) என்பது Math.min(1, 2, 3) க்கு சமம்.

Using Math.max() on an Array

ஒரு வரிசையில் அதிக எண்ணைக் கண்டறிய Math.max.apply ஐப் பயன்படுத்தலாம்:

எடுத்துக்காட்டு

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply(null, [1, 2, 3]) என்பது Math.max(1, 2, 3) க்கு சமம்.

JavaScript Array Minimum Method

ஒரு JavaScript வரிசையில் குறைந்த மதிப்பைக் கண்டறிய உள்ளமைக்கப்பட்ட செயல்பாடு இல்லை.

குறைந்த எண்ணைக் கண்டறிய வேகமான குறியீடு ஒரு வீட்டில் தயாரிக்கப்பட்ட முறையைப் பயன்படுத்துவது.

இந்த செயல்பாடு ஒரு வரிசை வழியாக வளையமிட்டு, ஒவ்வொரு மதிப்பையும் கண்டறியப்பட்ட குறைந்த மதிப்புடன் ஒப்பிடுகிறது:

எடுத்துக்காட்டு (Find Min)

function myArrayMin(arr) {
  let len = arr.length;
  let min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
}

JavaScript Array Maximum Method

ஒரு JavaScript வரிசையில் அதிக மதிப்பைக் கண்டறிய உள்ளமைக்கப்பட்ட செயல்பாடு இல்லை.

அதிக எண்ணைக் கண்டறிய வேகமான குறியீடு ஒரு வீட்டில் தயாரிக்கப்பட்ட முறையைப் பயன்படுத்துவது.

இந்த செயல்பாடு ஒரு வரிசை வழியாக வளையமிட்டு, ஒவ்வொரு மதிப்பையும் கண்டறியப்பட்ட அதிக மதிப்புடன் ஒப்பிடுகிறது:

எடுத்துக்காட்டு (Find Max)

function myArrayMax(arr) {
  let len = arr.length;
  let max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
}

Sorting Object Arrays

JavaScript வரிசைகள் பெரும்பாலும் பொருள்களைக் கொண்டிருக்கின்றன:

எடுத்துக்காட்டு

const cars = [
  {type:"Volvo", year:2016},
  {type:"Saab", year:2001},
  {type:"BMW", year:2010}
];

பொருள்கள் வெவ்வேறு தரவு வகைகளின் பண்புகளைக் கொண்டிருந்தாலும், வரிசையை வரிசைப்படுத்த sort() முறையைப் பயன்படுத்தலாம்.

தீர்வு பண்பு மதிப்புகளை ஒப்பிட ஒரு ஒப்பீட்டு செயல்பாட்டை எழுதுவது:

எடுத்துக்காட்டு

cars.sort(function(a, b){return a.year - b.year});

சரம் பண்புகளை ஒப்பிடுவது சற்று சிக்கலானது:

எடுத்துக்காட்டு

cars.sort(function(a, b){
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

Stable Array sort()

ES2019 வரிசை sort() முறையைத் திருத்தியது.

2019க்கு முன், விவரக்குறிப்பு குவிக்ஸார்ட் போன்ற நிலையற்ற வரிசைப்படுத்தும் வழிமுறைகளை அனுமதித்தது.

ES2019 க்குப் பிறகு, உலாவிகள் நிலையான வரிசைப்படுத்தும் வழிமுறையைப் பயன்படுத்த வேண்டும்:

ஒரு மதிப்பில் உறுப்புகளை வரிசைப்படுத்தும் போது, உறுப்புகள் ஒரே மதிப்புடன் மற்ற உறுப்புகளுடன் தொடர்புடைய நிலையை வைத்திருக்க வேண்டும்.

எடுத்துக்காட்டு

const myArr = [
  {name:"X00",price:100 },
  {name:"X01",price:100 },
  {name:"X02",price:100 },
  {name:"X03",price:100 },
  {name:"X04",price:110 },
  {name:"X05",price:110 },
  {name:"X06",price:110 },
  {name:"X07",price:110 }
];

மேலே உள்ள எடுத்துக்காட்டில், விலையில் வரிசைப்படுத்தும் போது, பெயர்கள் இன்னொரு தொடர்புடைய நிலையில் வெளியே வர முடியாது:

X01 100
X03 100
X00 100
X02 100
X05 110
X04 110
X06 110
X07 110

Complete JavaScript Reference

முழுமையான விளக்கங்கள் மற்றும் பல எடுத்துக்காட்டுகளுடன் அனைத்து JavaScript பண்புகள் மற்றும் முறைகளுக்கான முழுமையான குறிப்புக்கு, செல்லவும்:

Jassif Team இன் முழு JavaScript குறிப்பு.

குறிப்பில் 1999 முதல் 2025 வரையிலான அனைத்து JavaScript புதுப்பிப்புகளும் உள்ளடக்கப்பட்டுள்ளன.

Exercise

பின்வரும் குறியீட்டைக் கவனியுங்கள்:

const fruits = ['Apple', 'Orange', 'Banana'];
fruits.reverse();

fruits வரிசையின் முடிவு என்னவாக இருக்கும்?

reverse() பிறகு fruits வரிசை என்ன?

['Orange', 'Banana', 'Apple']
✗ தவறு! reverse() வரிசையை முழுமையாக தலைகீழாக மாற்றுகிறது, ஆனால் இந்த முறை வரிசைப்படுத்தப்படாது.
['Banana', 'Orange', 'Apple']
✓ சரி! reverse() முறை வரிசையை முழுமையாக தலைகீழாக மாற்றுகிறது. ['Apple', 'Orange', 'Banana'] → ['Banana', 'Orange', 'Apple'].
['Apple', 'Banana', 'Orange']
✗ தவறு! இது வரிசைப்படுத்தப்பட்ட வரிசை (அகரவரிசை), ஆனால் reverse() தலைகீழான வரிசையைக் கொடுக்கும்.
['Orange', 'Apple', 'Banana']
✗ தவறு! இது சீரற்ற மறுசீரமைப்பு. reverse() முடிவு ['Banana', 'Orange', 'Apple'] ஆக இருக்கும்.