تفاوت میان نسخه‌های «JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت»

از ویکی کد
پرش به ناوبری پرش به جستجو
سطر ۵: سطر ۵:
  
 
=== مثال ===
 
=== مثال ===
<br />
+
<syntaxhighlight lang="javascript">
 
+
var fruits = ["Banana", "Orange", "Apple", "Mango"];
==Reversing an Array==
+
fruits.sort();        // Sorts the elements of fruits
برعکس کردن یک آرایه
+
</syntaxhighlight>
 
 
The <code>reverse()</code> method reverses the elements in an array.
 
 
 
متد reverse() عناصر یک آرایه را برعکس می‌کند.
 
  
You can use it to sort an array in descending order:
+
== برعکس کردن یک آرایه ==
 +
متد{{Code|code=reverse()|lang=javascript}}عناصر یک آرایه را برعکس می‌کند.
  
 
شما می‌توانید از این تکنیک برای مرتب‌سازی نزولی یک آرایه استفاده کنید.
 
شما می‌توانید از این تکنیک برای مرتب‌سازی نزولی یک آرایه استفاده کنید.
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
var fruits = ["Banana", "Orange", "Apple", "Mango"];
 
var fruits = ["Banana", "Orange", "Apple", "Mango"];
 
 
fruits.sort();        // First sort the elements of fruits
 
fruits.sort();        // First sort the elements of fruits
 
 
fruits.reverse();    // Then reverse the order of the elements
 
fruits.reverse();    // Then reverse the order of the elements
 +
</syntaxhighlight>
  
==Numeric Sort==
+
== مرتب‌سازی عددی ==
مرتب‌سازی عددی
+
به صورت پیشفرض، تابع{{Code|code=reverse()|lang=javascript}}مقادیری همانند '''رشته‌های متنی''' را مرتب می‌کند.
 
 
By default, the <code>sort()</code> function sorts values as '''strings'''.
 
 
 
به صورت پیشفرض، تابع sort() مقادیری همانند '''رشته‌های متنی''' را مرتب می‌کند.
 
 
 
This works well for strings ("Apple" comes before "Banana").
 
  
 
این متد برای رشته‌های متنی بسیار خوب کار می‌کند .(کلمه "Apple" قبل از کلمه "Banana" می‌آید )
 
این متد برای رشته‌های متنی بسیار خوب کار می‌کند .(کلمه "Apple" قبل از کلمه "Banana" می‌آید )
 
However, if numbers are sorted as strings, "25" is bigger than "100", because "2" is bigger than "1".
 
  
 
اما، اگر عددها همانند رشته‌های متنی مرتب شوند، "۲۵" بزرگتر از عدد "۱۰۰" خواهد بود، زیرا که "۲" از "۱" بزرگتر است.
 
اما، اگر عددها همانند رشته‌های متنی مرتب شوند، "۲۵" بزرگتر از عدد "۱۰۰" خواهد بود، زیرا که "۲" از "۱" بزرگتر است.
  
Because of this, the <code>sort()</code> method will produce incorrect result when sorting numbers.
+
به همین دلیل، متد{{Code|code=sort()|lang=javascript}}در زمانی که برای مرتب‌سازی اعداد استفاده شود موجب بروز نتایج نادرست می‌شود.
 
 
به همین دلیل، متد sort() در زمانی که برای مرتب‌سازی اعداد استفاده شود موجب بروز نتایج نادرست می‌شود.
 
 
 
You can fix this by providing a '''compare function''':
 
  
 
شما می‌توانید این مشکل را با یک '''تابع مقایسه''' حل کنید:
 
شما می‌توانید این مشکل را با یک '''تابع مقایسه''' حل کنید:
  
 
===مثال===
 
===مثال===
var points = [۴۰, ۱۰۰, ۱, ۵, ۲۵, ۱۰];
+
<syntaxhighlight lang="javascript">
 
+
var points = [40, 100, 1, 5, 25, 10];
 
points.sort(function(a, b){return a - b});
 
points.sort(function(a, b){return a - b});
 
+
</syntaxhighlight>می‌توانید از روش مشابهی برای مرتب‌سازی نزولی یک آرایه استفاده کنید:
Use the same trick to sort an array descending:
 
 
 
می‌توانید از روش مشابهی برای مرتب‌سازی نزولی یک آرایه استفاده کنید:
 
  
 
===مثال===
 
===مثال===
var points = [۴۰, ۱۰۰, ۱, ۵, ۲۵, ۱۰];
+
<syntaxhighlight lang="javascript">
 
+
var points = [40, 100, 1, 5, 25, 10];
 
points.sort(function(a, b){return b - a});
 
points.sort(function(a, b){return b - a});
 +
</syntaxhighlight>
  
==The Compare Function==
+
== تابع مقایسه ==
تابع مقایسه
 
 
 
The purpose of the compare function is to define an alternative sort order.
 
 
 
 
هدف از استفاده از تابع مقایسه تعریف یک روش مرتب‌سازی دیگر است.
 
هدف از استفاده از تابع مقایسه تعریف یک روش مرتب‌سازی دیگر است.
  
The compare function should return a negative, zero, or positive value, depending on the arguments:
+
یک تابع مقایسه می‌بایست یک مقدار منفی، صفر یا مثبت با توجه به آرگومانهایش برگرداند:<syntaxhighlight lang="javascript">
 +
function(a, b){return a - b}
 +
</syntaxhighlight>زمانی که متد{{Code|code=sort()|lang=javascript}}دو مقدار را با یک دیگر مقایسه می‌کند، این تابع مقادیر را برای تابع مقایسه ارسال می‌کند و مقادیر را با توجه به مقدار بازگشتی تابع مقایسه (منفی، صفر، مثبت) مرتب می‌کند.
  
یک تابع مقایسه می‌بایست یک مقدار منفی، صفر یا مثبت با توجه به آرگومانهایش برگرداند:
+
* اگر نتیجه عددی منفی باشد، عدد a قبل از b مرتب‌سازی می‌شود.
 +
* اگر نتیجه عدد مثبت باشد، عدد b قبل از a مرتب‌سازی می‌شود.
 +
* اگر نتیجه صفر باشد، تغییری روی روش مرتب‌سازی دو مقدار اعمال نمی‌شود.
  
 +
'''مثال:'''<syntaxhighlight lang="javascript">
 
function(a, b){return a - b}
 
function(a, b){return a - b}
 
+
</syntaxhighlight>{{اصلاح ترجمه بخش}}The compare function compares all the values in the array, two values at a time <code>(a, b)</code>.
When the <code>sort()</code> function compares two values, it sends the values to the compare function, and sorts the values according to the returned (negative, zero, positive) value.
 
 
 
زمانی که متد sort() دو مقدار را با یک دیگر مقایسه می‌کند، این تابع مقادیر را برای تابع مقایسه ارسال می‌کند و مقادیر را با توجه به مقدار بازگشتی تابع مقایسه (منفی، صفر، مثبت) مرتب می‌کند.
 
 
 
If the result is negative <code>a</code> is sorted before <code>b</code>.
 
 
 
اگر نتیجه عددی منفی باشد، عدد a قبل از b مرتب‌سازی می‌شود.
 
 
 
If the result is positive <code>b</code> is sorted before <code>a</code>.
 
 
 
اگر نتیجه عدد مثبت باشد، عدد b قبل از a مرتب‌سازی می‌شود.
 
 
 
If the result is 0 no changes are done with the sort order of the two values.
 
 
 
اگر نتیجه صفر باشد، تغییری روی روش مرتب‌سازی دو مقدار اعمال نمی‌شود.
 
 
 
'''مثال:'''
 
 
 
The compare function compares all the values in the array, two values at a time <code>(a, b)</code>.
 
  
 
تابع مقایسه تمامی مقادیر موجود در یک آرایه را به صورت دو مقدار با هم، مقایسه می‌کند.
 
تابع مقایسه تمامی مقادیر موجود در یک آرایه را به صورت دو مقدار با هم، مقایسه می‌کند.
  
When comparing 40 and 100, the <code>sort()</code> method calls the compare function(40, 100).
+
زمانی که عدد ۴۰ و ۱۰۰ را مقایسه می‌کنیم، متد{{Code|code=sort()|lang=javascript}}تابع مقایسه را با مقادیر (۱۰۰، ۴۰) فراخوانی می‌کند.
  
زمانی که عدد ۴۰ و ۱۰۰ را مقایسه می‌کنیم، متد sort() تابع مقایسه را با مقادیر (۱۰۰، ۴۰) فراخوانی می‌کند.
+
تابع حاصل ۱۰۰–۴۰ یا{{Code|code=(a - b)|lang=javascript}}را محاسبه می‌کند، و ازآنجایی که نتیجه عددی منفی (۶۰-) است، تابع مقایسه عدد ۴۰ را کوچکتر از ۱۰۰ در نظر می‌گیرد.
 
 
The function calculates 40 - 100 <code>(a - b)</code>, and since the result is negative (-60), the sort function will sort 40 as a value lower than 100.
 
 
 
تابع حاصل ۱۰۰–۴۰ یا (b-a) را محاسبه می‌کند، و ازآنجایی که نتیجه عددی منفی (۶۰-)است، تابع مقایسه عدد ۴۰را کوچکتر از ۱۰۰ در نظر می‌گیرد.
 
 
 
You can use this code snippet to experiment with numerically and alphabetically sorting:
 
 
 
شما می‌توانید از کد زیر برای درک مفهوم مرتب‌سازی عددی و الفبایی استفاده کنید:
 
  
 +
شما می‌توانید از کد زیر برای درک مفهوم مرتب‌سازی عددی و الفبایی استفاده کنید:<syntaxhighlight lang="javascript">
 
<button onclick="myFunction1()">Sort Alphabetically</button>
 
<button onclick="myFunction1()">Sort Alphabetically</button>
 
 
<button onclick="myFunction2()">Sort Numerically</button>
 
<button onclick="myFunction2()">Sort Numerically</button>
  
<nowiki><p id="demo"></p></nowiki>
+
<p id="demo"></p>
  
 
<script>
 
<script>
 
+
var points = [40, 100, 1, 5, 25, 10];
var points = [۴۰, ۱۰۰, ۱, ۵, ۲۵, ۱۰];
 
 
 
 
document.getElementById("demo").innerHTML = points;
 
document.getElementById("demo").innerHTML = points;
  
 
function myFunction1() {
 
function myFunction1() {
 
+
  points.sort();
points.sort();
+
  document.getElementById("demo").innerHTML = points;
 
 
document.getElementById("demo").innerHTML = points;
 
 
 
 
}
 
}
  
 
function myFunction2() {
 
function myFunction2() {
 
+
  points.sort(function(a, b){return a - b});
points.sort(function(a, b){return a - b});
+
  document.getElementById("demo").innerHTML = points;
 
 
document.getElementById("demo").innerHTML = points;
 
 
 
 
}
 
}
 
 
</script>
 
</script>
 +
</syntaxhighlight>
  
==Sorting an Array in Random Order==
+
== مرتب‌سازی یک آرایه به صورت تصادفی {{به انگلیسی|Random}} ==
مرتب‌سازی یک آرایه به صورت تصادفی (random)
 
  
 
===مثال===
 
===مثال===
var points = [۴۰, ۱۰۰, ۱, ۵, ۲۵, ۱۰];
+
<syntaxhighlight lang="javascript">
 
+
var points = [40, 100, 1, 5, 25, 10];
 
points.sort(function(a, b){return 0.5 - Math.random()});
 
points.sort(function(a, b){return 0.5 - Math.random()});
 +
</syntaxhighlight>
  
==Find the Highest (or Lowest) Array Value==
+
== پیدا کردن بزرگترین (یا کوچکترین) مقدار آرایه ==
پیدا کردن بزرگترین (یا کوچکترین) مقدار آرایه
 
 
 
There are no built-in functions for finding the max or min value in an array.
 
 
 
 
هیچ تابع پیشفرضی برای پیدا کردن بزرگترین یا کوچکترین مقدار در یک آرایه وجود ندارد.
 
هیچ تابع پیشفرضی برای پیدا کردن بزرگترین یا کوچکترین مقدار در یک آرایه وجود ندارد.
  
However, after you have sorted an array, you can use the index to obtain the highest and lowest values.
+
اما، بعد از اینکه شما یک آرایه را مرتب کردید، شما می‌توانید با استفاده از اندیس‌ها، کوچکترین و بزرگترین مقدار را تشخیص دهید.
 
 
اما، بعد از اینکه شما یک آرایه را مرتب کردید، شما می‌توانید با استفاده از اندیسها، کوچکترین و بزرگترین مقدار را تشخیص دهید.
 
 
 
Sorting ascending:
 
  
مرتب‌سازی صعودی
+
مرتب‌سازی صعودی:
  
 
===مثال===
 
===مثال===
var points = [۴۰, ۱۰۰, ۱, ۵, ۲۵, ۱۰];
+
<syntaxhighlight lang="javascript">
 
+
var points = [40, 100, 1, 5, 25, 10];
 
points.sort(function(a, b){return a - b});
 
points.sort(function(a, b){return a - b});
 
 
// now points[0] contains the lowest value
 
// now points[0] contains the lowest value
 
 
// and points[points.length-1] contains the highest value
 
// and points[points.length-1] contains the highest value
 
+
</syntaxhighlight>مرتب‌سازی نزولی:
Sorting descending:
 
 
 
مرتب‌سازی نزولی:
 
  
 
===مثال===
 
===مثال===
var points = [۴۰, ۱۰۰, ۱, ۵, ۲۵, ۱۰];
+
<syntaxhighlight lang="javascript">
 
+
var points = [40, 100, 1, 5, 25, 10];
 
points.sort(function(a, b){return b - a});
 
points.sort(function(a, b){return b - a});
 
 
// now points[0] contains the highest value
 
// now points[0] contains the highest value
 
 
// and points[points.length-1] contains the lowest value
 
// and points[points.length-1] contains the lowest value
 +
</syntaxhighlight>مرتب‌سازی کل یک آرایه فقط برای پیدا کردن بزرگترین (یا کوچکترین) مقدار موجود در آرایه روشی کم بازده است.
  
Sorting a whole array is a very inefficient method if you only want to find the highest (or lowest) value.
+
==استفاده از تابع ()Math.max روی یک آرایه==
 
+
شما می‌توانید از{{Code|code=Math.max.apply|lang=javascript}}برای پیدا کردن بزرگترین عدد در یک آرایه استفاده کنید:
مرتب‌سازی کل یک آرایه فقط برای پیدا کردن بزرگترین (یا کوچکترین) مقدار موجود در آرایه روشی کم بازده است.
 
 
 
==Using Math.max() on an Array==
 
'''استفاده از تابع Math.max() روی یک آرایه'''
 
 
 
You can use <code>Math.max.apply</code> to find the highest number in an array:
 
 
 
شما می‌توانید از Math.max.apply برای پیدا کردن بزرگترین عدد در یک آرایه استفاده کنید:
 
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
function myArrayMax(arr) {
 
function myArrayMax(arr) {
 
+
  return Math.max.apply(null, arr);
return Math.max.apply(null, arr);
 
 
 
 
}
 
}
 +
</syntaxhighlight>دستور{{Code|code=Math.max.apply(null, [1, 2, 3])|lang=javascript}}با دستور{{Code|code=Math.max(1, 2, 3)|lang=javascript}}برابر است.
  
<code>Math.max.apply(null, [1, 2, 3])</code> is equivalent to <code>Math.max(1, 2, 3)</code>.
+
== استفاده از تابع ()Math.min روی یک آرایه ==
 
+
شما می‌توانید از{{Code|code=Math.min.apply|lang=javascript}}برای پیدا کردن کمترین عدد در یک آرایه استفاده کنید:
دستور Math.max.apply(null,[1,2,3]) با دستور Math.max(1,2,3) برابر است.
 
 
 
==Using Math.min() on an Array==
 
'''استفاده از تابع Math.min() روی یک آرایه'''
 
 
 
You can use <code>Math.min.apply</code> to find the lowest number in an array:
 
 
 
شما می‌توانید از Math.min.apply برای پیدا کردن کمترین عدد در یک آرایه استفاده کنید:
 
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
function myArrayMin(arr) {
 
function myArrayMin(arr) {
 
+
  return Math.min.apply(null, arr);
return Math.min.apply(null, arr);
 
 
 
 
}
 
}
 +
</syntaxhighlight>دستور{{Code|code=Math.min.apply(null, [1, 2, 3])|lang=javascript}}با دستور{{Code|code=Math.min(1, 2, 3)|lang=javascript}}برابر است.
  
<code>Math.min.apply(null, [1, 2, 3])</code> is equivalent to <code>Math.min(1, 2, 3)</code>.
+
== متد Min و Max من در جاوااسکریپت ==
 
 
دستور Math.min.apply(null,[1,2,3]) با دستور Math.min(1,2,3) برابر است.
 
 
 
==My Min / Max JavaScript Methods==
 
'''متد Min و Max من در جاوااسکریپت'''
 
 
 
The fastest solution is to use a "home made" method.
 
 
 
 
بهترین روش برای اینکار استفاده از یک «متد شخصی» است.
 
بهترین روش برای اینکار استفاده از یک «متد شخصی» است.
 
This function loops through an array comparing each value with the highest value found:
 
  
 
این تابع یک حلقه دارد که هر مقدار در آرایه را با بزرگترین مقداری که پیدا کند مقایسه می‌کند:
 
این تابع یک حلقه دارد که هر مقدار در آرایه را با بزرگترین مقداری که پیدا کند مقایسه می‌کند:
  
===مثال (Find Max)===
+
===مثال (پیداکردن Max)===
 +
<syntaxhighlight lang="javascript">
 
function myArrayMax(arr) {
 
function myArrayMax(arr) {
 
+
  var len = arr.length;
var len = arr.length;
+
  var max = -Infinity;
 
+
  while (len--) {
var max = -Infinity;
+
    if (arr[len] > max) {
 
+
      max = arr[len];
while (len--) {
+
    }
 
 
if (arr[len] > max) {
 
 
 
  max = arr[len];
 
 
 
 
   }
 
   }
 
+
  return max;
 
}
 
}
 +
</syntaxhighlight>این تابع یک حلقه دارد که هر مقدار در آرایه را با کوچکترین مقداری که پیدا کند مقایسه می‌کند:
  
return max;
+
===مثال (پیداکردن Min)===
 
+
<br /><syntaxhighlight lang="javascript">
}
 
 
 
This function loops through an array comparing each value with the lowest value found:
 
 
 
این تابع یک حلقه دارد که هر مقدار در آرایه را با کوچکترین مقداری که پیدا کند مقایسه می‌کند:
 
 
 
===مثال (Find Min)===
 
 
function myArrayMin(arr) {
 
function myArrayMin(arr) {
 
+
  var len = arr.length;
var len = arr.length;
+
  var min = Infinity;
 
+
  while (len--) {
var min = Infinity;
+
    if (arr[len] < min) {
 
+
      min = arr[len];
while (len--) {
+
    }
 
 
if (arr[len] < min) {
 
 
 
  min = arr[len];
 
 
 
 
   }
 
   }
 
+
  return min;
}
 
 
 
return min;
 
 
 
 
}
 
}
 +
</syntaxhighlight>
  
==Sorting Object Arrays==
+
== مرتب‌سازی آرایه اشیاء ==
'''مرتب‌سازی آرایه اشیا'''
+
آرایه‌های جاوااسکریپت اغلب شامل اشیاء نیز می‌شوند:
 
 
JavaScript arrays often contain objects:
 
 
 
آرایه‌های جاوااسکریپت اغلب شامل اشیا نیز می‌شوند:
 
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
var cars = [
 
var cars = [
 
 
   {type:"Volvo", year:2016},
 
   {type:"Volvo", year:2016},
 
 
   {type:"Saab", year:2001},
 
   {type:"Saab", year:2001},
 
 
   {type:"BMW", year:2010}
 
   {type:"BMW", year:2010}
 
 
];
 
];
 
+
</syntaxhighlight>حتی اگر اشیا ویژگی‌های دیگری از نوع داده‌های متفاوت داشته باشند، متد{{Code|code=sort()|lang=javascript}}می‌تواند برای مرتب‌سازی این نوع آرایه‌ها نیز استفاده شود.
Even if objects have properties of different data types, the <code>sort()</code> method can be used to sort the array.
 
 
 
حتی اگر اشیا ویژگی‌های دیگری از نوع داده‌های متفاوت داشته باشند، متد sort() می‌تواند برای مرتب‌سازی این نوع آرایه‌ها نیز استفاده شود.
 
 
 
The solution is to write a compare function to compare the property values:
 
  
 
راه حل این مشکل نوشتن یک تابع مقایسه برای مقایسه مقادیر ویژگی‌ها است:
 
راه حل این مشکل نوشتن یک تابع مقایسه برای مقایسه مقادیر ویژگی‌ها است:
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
cars.sort(function(a, b){return a.year - b.year});
 
cars.sort(function(a, b){return a.year - b.year});
 
+
</syntaxhighlight>مقایسه ویژگی‌های مقادیر رشته‌ای با روشی کمی پیچیده‌تر:
Comparing string properties is a little more complex:
 
 
 
مقایسه ویژگی‌های مقادیر رشته‌ای با روشی کمی پیچیده‌تر:
 
  
 
===مثال===
 
===مثال===
 +
<syntaxhighlight lang="javascript">
 
cars.sort(function(a, b){
 
cars.sort(function(a, b){
 
+
  var x = a.type.toLowerCase();
var x = a.type.toLowerCase();
+
  var y = b.type.toLowerCase();
 
+
  if (x < y) {return -1;}
var y = b.type.toLowerCase();
+
  if (x > y) {return 1;}
 
+
  return 0;
if (x < y) {return -1;}
 
 
 
if (x > y) {return 1;}
 
 
 
return 0;
 
 
 
 
});
 
});
 +
</syntaxhighlight>
  
 
==منابع آموزشی==
 
==منابع آموزشی==

نسخهٔ ‏۱۳ آبان ۱۳۹۸، ساعت ۰۸:۲۶

دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳JavaScript:قوانین و اصول اولیه زبان جاوااسکریپت
۴JavaScript:خروجی جاوااسکریپت
۵JavaScript:عبارت‌ها در جاوااسکریپت
۶JavaScript:شیوهٔ نوشتن (Syntax) عبارات یا دستورات در جاوااسکریپت
۷JavaScript:نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸JavaScript:متغیرها در جاوااسکریپت
۹JavaScript:عملگرهای جاوااسکریپت
۱۰JavaScript:عملگرهای ریاضی در جاوااسکریپت
۱۱JavaScript:عملگرهای مقداردهی در جاوااسکریپت
۱۲JavaScript:انواع داده‌ها در جاوااسکریپت
۱۳JavaScript:توابع در جاوااسکریپت
۱۴JavaScript:اشیاء (object) در جاوااسکریپت
۱۵JavaScript:رویدادها در جاوااسکریپت
۱۶JavaScript:رشته‌های متنی (string) در جاوااسکریپت
۱۷JavaScript:متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸JavaScript:اعداد در جاوااسکریپت
۱۹JavaScript:متدهای داده‌های عددی در جاوااسکریپت
۲۰JavaScript:آرایه‌ها در جاوااسکریپت
۲۱JavaScript:متدهای آرایه در جاوااسکریپت
۲۲JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳JavaScript:متدهای پیمایش آرایه در جاوااسکریپت
۲۴JavaScript:اشیاء تاریخ و زمان در جاوااسکریپت
۲۵JavaScript:فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶JavaScript:متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷JavaScript:متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸JavaScript:شی ریاضی (Math) در جاوااسکریپت
۲۹JavaScript:ایجاد عدد تصادفی در جاوااسکریپت
۳۰JavaScript:مقادیر بولین (Booleans) در جاوااسکریپت
۳۱JavaScript:عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲JavaScript:ساختار if else و else if در جاوااسکریپت
۳۳JavaScript:تکه کد Switch در جاوا اسکریپت
۳۴JavaScript:حلقه For در جاوااسکریپت
۳۵JavaScript:حلقه While در جاوااسکریپت
۳۶JavaScript:کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷JavaScript:تبدیل نوع داده‌ها در جاوااسکریپت
۳۸JavaScript:عملیات‌های بیتی در جاوااسکریپت
۳۹JavaScript:عبارات با قاعده در جاوااسکریپت
۴۰JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱JavaScript:Scope در جاوااسکریپت
۴۲JavaScript:Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳JavaScript:استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴JavaScript:کلمه کلیدی This در جاوااسکریپت
۴۵JavaScript:کلمه کلیدی Let در جاوااسکریپت
۴۶JavaScript:ثابت‌ها در جاوااسکریپت
۴۷JavaScript:تعریف توابع به صورت پیکان
۴۸JavaScript:کلاس‌ها در جاوااسکریپت
۴۹JavaScript:اشکال‌زدایی در جاوااسکریپت
۵۰JavaScript:راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱JavaScript:بهترین تمرینات جاوااسکریپت
۵۲JavaScript:اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳JavaScript:کارایی در جاوااسکریپت
۵۴JavaScript:کلمات رزرو شده در جاوااسکریپت
۵۵JavaScript:ورژن‌های جاوااسکریپت
۵۶JavaScript:ECMAScript 5 - JavaScript 5
۵۷JavaScript:ECMAScript 6 - ECMAScript 2015
۵۸JavaScript:جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱JavaScript:فرم‌ها در جاوااسکریپت
۲JavaScript:API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱JavaScript:اشیاء در جاوااسکریپت
۲JavaScript:ویژگی‌های اشیاء در جاوااسکریپت
۳JavaScript:متدهای اشیاء در جاوااسکریپت
۴JavaScript:روش‌های دسترسی به شیء در جاوااسکریپت
۵JavaScript:سازنده‌های شیء در جاوااسکریپت
۶JavaScript:شکل اصلی شیء در جاوااسکریپت
۷JavaScript:متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱JavaScript:تعریف تابع در جاوااسکریپت
۲JavaScript:پارامتر توابع در جاوااسکریپت
۳JavaScript:فراخوانی تابع در جاوااسکریپت
۴JavaScript:صدا کردن تابع در جاوااسکریپت
۵JavaScript:تابع Apply در جاوااسکریپت
۶JavaScript:بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱JavaScript:HTML DOM در جاوااسکریپت
۲JavaScript:متدهای HTML DOM در جاوااسکریپت
۳JavaScript:HTML DOM Document در جاوااسکریپت
۴JavaScript:عناصر HTML DOM در جاوااسکریپت
۵JavaScript:HTML DOM در جاوااسکریپت - تغییر محتوای HTML
۶JavaScript:DOM در جاوااسکریپت - تغییر CSS
۷JavaScript:انیمیشن در HTML DOM جاوااسکریپت
۸JavaScript:رویدادها در HTML DOM جاوااسکریپت
۹JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت
۱۰JavaScript:پیمایش در HTML DOM جاوااسکریپت
۱۱JavaScript:عناصر (گره‌ها) HTML DOM در جاوااسکریپت
۱۲JavaScript:مجموعه‌های HTML DOM جاوااسکریپت
۱۳JavaScript:لیست گره‌ها در HTML DOM جاوااسکریپت
Browser BOM
۱JavaScript:پنجره جاوااسکریپت - مدل شیء مرورگر
۲JavaScript:پنجره صفحه نمایش در جاوااسکریپت
۳JavaScript:موقعیت پنجره در جاوااسکریپت
۴JavaScript:تاریخچه پنجره در جاوااسکریپت
۵JavaScript:ناوبری پنجره در جاوااسکریپت
۶JavaScript:جعبه پیغام جاوااسکریپت
۷JavaScript:رویدادهای زمان‌بندی شده در جاوااسکریپت
۸JavaScript:کوکی‌های جاوااسکریپت
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴JavaScript:AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۳JavaScript:JSON در برابر XML
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / HTML DOM در جی‌کوئری

مرتب کردن یک آرایه

متدtoString()یک آرایه را بر حسب حروف الفبا مرتب می‌کند:[۱]

مثال

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();        // Sorts the elements of fruits

برعکس کردن یک آرایه

متدreverse()عناصر یک آرایه را برعکس می‌کند.

شما می‌توانید از این تکنیک برای مرتب‌سازی نزولی یک آرایه استفاده کنید.

مثال

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();        // First sort the elements of fruits
fruits.reverse();     // Then reverse the order of the elements

مرتب‌سازی عددی

به صورت پیشفرض، تابعreverse()مقادیری همانند رشته‌های متنی را مرتب می‌کند.

این متد برای رشته‌های متنی بسیار خوب کار می‌کند .(کلمه "Apple" قبل از کلمه "Banana" می‌آید )

اما، اگر عددها همانند رشته‌های متنی مرتب شوند، "۲۵" بزرگتر از عدد "۱۰۰" خواهد بود، زیرا که "۲" از "۱" بزرگتر است.

به همین دلیل، متدsort()در زمانی که برای مرتب‌سازی اعداد استفاده شود موجب بروز نتایج نادرست می‌شود.

شما می‌توانید این مشکل را با یک تابع مقایسه حل کنید:

مثال

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

می‌توانید از روش مشابهی برای مرتب‌سازی نزولی یک آرایه استفاده کنید:

مثال

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

تابع مقایسه

هدف از استفاده از تابع مقایسه تعریف یک روش مرتب‌سازی دیگر است.

یک تابع مقایسه می‌بایست یک مقدار منفی، صفر یا مثبت با توجه به آرگومانهایش برگرداند:

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

زمانی که متدsort()دو مقدار را با یک دیگر مقایسه می‌کند، این تابع مقادیر را برای تابع مقایسه ارسال می‌کند و مقادیر را با توجه به مقدار بازگشتی تابع مقایسه (منفی، صفر، مثبت) مرتب می‌کند.

  • اگر نتیجه عددی منفی باشد، عدد a قبل از b مرتب‌سازی می‌شود.
  • اگر نتیجه عدد مثبت باشد، عدد b قبل از a مرتب‌سازی می‌شود.
  • اگر نتیجه صفر باشد، تغییری روی روش مرتب‌سازی دو مقدار اعمال نمی‌شود.

مثال:

function(a, b){return a - b}
میانبر:
الگو:اتب

The compare function compares all the values in the array, two values at a time (a, b).

تابع مقایسه تمامی مقادیر موجود در یک آرایه را به صورت دو مقدار با هم، مقایسه می‌کند.

زمانی که عدد ۴۰ و ۱۰۰ را مقایسه می‌کنیم، متدsort()تابع مقایسه را با مقادیر (۱۰۰، ۴۰) فراخوانی می‌کند.

تابع حاصل ۱۰۰–۴۰ یا(a - b)را محاسبه می‌کند، و ازآنجایی که نتیجه عددی منفی (۶۰-) است، تابع مقایسه عدد ۴۰ را کوچکتر از ۱۰۰ در نظر می‌گیرد.

شما می‌توانید از کد زیر برای درک مفهوم مرتب‌سازی عددی و الفبایی استفاده کنید:

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

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

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

مرتب‌سازی یک آرایه به صورت تصادفی (به انگلیسی: Random)

مثال

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

پیدا کردن بزرگترین (یا کوچکترین) مقدار آرایه

هیچ تابع پیشفرضی برای پیدا کردن بزرگترین یا کوچکترین مقدار در یک آرایه وجود ندارد.

اما، بعد از اینکه شما یک آرایه را مرتب کردید، شما می‌توانید با استفاده از اندیس‌ها، کوچکترین و بزرگترین مقدار را تشخیص دهید.

مرتب‌سازی صعودی:

مثال

var 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

مرتب‌سازی نزولی:

مثال

var 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

مرتب‌سازی کل یک آرایه فقط برای پیدا کردن بزرگترین (یا کوچکترین) مقدار موجود در آرایه روشی کم بازده است.

استفاده از تابع ()Math.max روی یک آرایه

شما می‌توانید ازMath.max.applyبرای پیدا کردن بزرگترین عدد در یک آرایه استفاده کنید:

مثال

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

دستورMath.max.apply(null, [1, 2, 3])با دستورMath.max(1, 2, 3)برابر است.

استفاده از تابع ()Math.min روی یک آرایه

شما می‌توانید ازMath.min.applyبرای پیدا کردن کمترین عدد در یک آرایه استفاده کنید:

مثال

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

دستورMath.min.apply(null, [1, 2, 3])با دستورMath.min(1, 2, 3)برابر است.

متد Min و Max من در جاوااسکریپت

بهترین روش برای اینکار استفاده از یک «متد شخصی» است.

این تابع یک حلقه دارد که هر مقدار در آرایه را با بزرگترین مقداری که پیدا کند مقایسه می‌کند:

مثال (پیداکردن Max)

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

این تابع یک حلقه دارد که هر مقدار در آرایه را با کوچکترین مقداری که پیدا کند مقایسه می‌کند:

مثال (پیداکردن Min)


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

مرتب‌سازی آرایه اشیاء

آرایه‌های جاوااسکریپت اغلب شامل اشیاء نیز می‌شوند:

مثال

var 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){
  var x = a.type.toLowerCase();
  var y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

منابع آموزشی