‎‎سورت آرايه جاوااسكريپتJavaScript Sorting Arrays -‎

Previous >    <Next  

‎‎سورت كردن يك آرايهSorting an Array -‎

‎‎متد‎sort( ) ‎ يك آرايه را به ترتيب آلفابتيك سورت مي نمايد .

‎‎مثال ـ سورت آرايه

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

--(go to editor for change code and run)

‎‎معكوس نمودن آرايهReversing an Array -‎

‎متد‎reverse( )‎ ،آرايه اي را معكوس ميكند، يعني آخرين عنصر ‎اولين شده وبهمين ترتيب براي عناصر بعدي.

‎‎ازاين متد براي سورت نزولي آرايه ميتوان استفاده كرد.

‎‎مثال ـ سورت نزولي

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

--(go to editor for change code and run)

‎‎سورت عدديNumeric Sort -‎

‎‎بصورت پيش فرض متد‎sort( )‎ آرايه را سورت رشته اي ميكند .

‎‎اين مورد براي رشته هاي الفابتيك خوب كار ميكند‎"Apple‎"‎ قبل از‎"Banana‎"‎قرار ميگيرد .

‎اما چنانچه رشته ها عددي باشند، مثل‎ ‎"25‎", ‎"100‎"‎ آنگاه‎‎"25‎">‎"100‎"‎‎ ‎منظور ميشود .بهمين دليل نتيجه سورت نادرست خواهد بود.

‎‎ميتوان با ارائه يك تابع مقايسه اي اين مشكل را برطرف نمود.

‎‎مثال ـ سورت عددي

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

--(go to editor for change code and run)

‎‎تابع مقايسه در سورتThe Compare Function -‎

‎‎هدف از تابع مقايسه در‎sort( )‎ تعريف يك مرتب سازي جايگزين است .

‎‎برگشتي تابع مقايسه عددمنفي ، صفر وعدد مثبت است .تابع مقايسه فرم زيراست:

‎function (a,b){reutrn a-‎b}‎

‎هنگاميكه متد‎sort( )‎ مي خواهد دو عدد رامقايسه نمايد، آندو را به ‎تابع ارسال نموده ونتيجه را بررسي مي نمايد .وآنهارا براساس نتيجه برگشتي مرتب ميكند .اگر ‎برگشي منفي باشدa درسورت قبل ازb قرار ميگيرد، اگرمثبت باشد بعد ازآن .اگر صفرباشد تغييري ‎در سورت انجام نميشود.

‎‎مثال ـ سورت نزولي اعداد

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

--(go to editor for change code and run)

‎‎ميتوانيد از قطعه كد زير براي آزمايش عددي و حروفي استفاده كنيد.

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

<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 > 

--(go to editor for change code and run)

‎‎مرتب كردن آرايه به ترتيب تصادفي

‎‎مثال ـ سورت تصادفي

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

--(go to editor for change code and run)

‎The Fisher Yates Method‎

‎‎متد فيشر براي اولويت بندي راندم

‎روش مثال بالا براي اولويت بندي راندوم دقيق نيست، روشي كه در حدود سال‎1938‎ ‎پيش بيني شده است.

‎‎در جاوااسكريپت روش مطابق مثال زير تبديل گرديده است.

‎‎مثال ـ اولويت بندي راندوم فيشر

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;
}

--(go to editor for change code and run)

‎Find the Lowest (or Highest) Array Value‎

‎‎پيدا نمودن كوچكترين وبزرگترين مقدار آرايه

‎‎در جاوااسكريپت هيچ تابع داخلي براي پيداكردن ماكزيمم و مينيمم مقادير آرايه وجود ندارد.

‎اما بعدازاينكه آرايه را سورت نموديد، ميتوانيد اين موارد را درعنصر صفر وعنصرlength-‎1 ‎آرايه سورت شده بدست آوريد.

‎‎مثال ـ حداقل وحداكثر در سورت صعودي

 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 

--(go to editor for change code and run)

‎‎مثال ـ حداقل وحداكثر آرايه در سورت نزولي

 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 

--(go to editor for change code and run)

‎‎براي بدست آوردن حداقل وحداكثر مقادير آرايه، روش سورت كردن كامل كاراتراست.

‎‎استفاده‎Math.max()‎‎ در روي يك آرايه

‎ميتوان از‎Math.max()‎.apply‎ براي پيداكردن بزرگترين عدد درآرايه ‎استفاده كرد.

‎‎مثال ـ‎Math.max()‎.apply‎ براي پيدا كردن ماكزيمم .

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

--(go to editor for change code and run)

‎‎دو كد زير براي پيدا نمودن مكزيمم مشابه ميباشند.

‎‎Math.max.apply(null,[1,2,3]) ‎‎

‎‎Math.max(1,2,3)‎‎

‎‎استفاده‎Math.min()‎‎ در روي يك آرايه

‎ميتوان از‎Math.min()‎.apply‎ براي پيداكردن كوچكترين عدد درآرايه ‎استفاده كرد.

‎‎مثال ـ‎Math.min()‎.apply‎ براي پيدا كردن مينبمم.

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

--(go to editor for change code and run)

‎‎دو كد زير براي پيدا نمودن مينيمم مشابه ميباشند.

‎‎Math.min.apply(null,[1,2,3]) ‎‎

‎‎Math.min(1,2,3)‎‎

‎براي پيدا كردن ماكزيمم ومينيمم يك آرايه ميتوان توابعي نوشت .اين توابع روي آرايه حلقه زده ‎وآنها را ميتواند پيداكند.

‎‎مثال ـ تابع پيداكننده ماكزيمم آرايه

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

--(go to editor for change code and run)

‎‎مثال ـ يا فتن حداقل

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

--(go to editor for change code and run)

‎‎سورت اشياء آرايه ايSorting Object Arrays -‎

‎‎آرايه هاي جاوااسكريپت ميتوانند شئ باشند.

‎‎مثال ـ آرايه شئي

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}); 

--(go to editor for change code and run)

‎‎مقايسه ويژگي رشته اي كمي پيچيده تراست

‎‎مقايسه رشته اي‎ مثال -

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;
}); 

--(go to editor for change code and run)


Previous >    <Next