Sort ng Array ng JavaScript
- Previous Page JS Array Search
- Next Page JS Array Iteration
sort()
Ang paraan ay isa sa pinakamalakas na array method.
Pagtatala ng array
sort()
Ang paraan ay nagtatala ang array ayon sa abugado:
Example
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ayusin ang mga elemento sa fruits
Ibalik ang array
reverse()
Ang method ay magbalik sa mga elemento ng array.
Maaari mong gamitin ito upang ayusin ang array sa pagbaba ng uri:
Example
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Ayusin ang mga elemento sa fruits fruits.reverse(); // Ibalik ang pagkakasunod-sunod ng mga elemento
Pag-aayos ng numero
Sa katiyakan,sort()
Ang function ay ayusin angStringAng pagkakasunod-sunod ng halaga sa pag-aayos.
Ang function na ito ay lubos na katanggap-tanggap para sa string ("Apple" ay nasa unahan ng "Banana").
Gayunpaman, kung ang mga numero ay sinusunod bilang string, ang "25" ay mas malaki kaysa "100" dahil ang "2" ay mas malaki kaysa "1".
Dahil dito,sort()
Ang method ay magbibigay ng hindi tama na resulta kapag ayusin ang mga numero.
Kami ay gumagamit ng isangFunction na paghahambing ng halagaUpang ayusin ang problema na ito:
Example
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Gamitin ang parehong teknik upang ayusin ang array sa pagbaba ng uri:
Example
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Function na paghahambing ng halaga
Ang layunin ng function na paghahambing ay para tanggihan ang pangkaraniwang pagkasunod-sunod ng pag-aayos.
Ang function na paghahambing ay dapat magbigay ng isang negative, zero, o positive value, depende sa mga parameter:
function(a, b){return a-b}
Kapag, sort()
Ang function ay magpadala ng mga halaga sa function na paghahambing, at mag-aayos ng mga halaga ayon sa mga ibinabalik na halaga (negative, zero, o positive) ng function na paghahambing.
Halimbawa:
Kapag pinaghahambing ang 40 at 100,sort()
Ang method ay magtawag sa function na paghahambing function(40,100).
Ang function ay magtutuos ng 40-100, at magbibigay ng -60 (negative value).
Ang function na pagkasunod-sunod ay maglalaro ng 40 sa mas mababang halaga kaysa 100.
Maaari mong gamitin ang mga sumusunod na code snippet upang subukan ang pagkasunod-sunod ng numero at leter:
<button onclick="myFunction1()">以字母顺序排序</button> <button onclick="myFunction2()">以数字顺序排序</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>
以随机顺序排序数组
Example
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
查找最高(或最低)的数组值
JavaScript 不提供查找数组中最大或最小值的内置函数。
不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。
升序排序:
Example
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // 现在 points[0] 包含最低值 // 而 points[points.length-1] 包含最高值
降序排序:
Example
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // 现在 points[0] 包含最高值 // 而 points[points.length-1] 包含最低值
如果您仅仅需要找到最高或最低值,对整个数组进行排序是效率极低的方法。
对数组使用 Math.max()
您可以使用 Math.max.apply
来查找数组中的最高值:
Example
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
等于 Math.max(1, 2, 3)
。
对数组使用 Math.min()
您可以使用 Math.min.apply
来查找数组中的最低值:
Example
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
等于 Math.min(1, 2, 3)
。
我的 Min / Max JavaScript 方法
最快的解决方法是使用“自定义”方法。
此函数遍历数组,用找到的最高值与每个值进行比较:
示例(查找 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; }
Sorting Object Arrays
JavaScript arrays often contain objects:
Example
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Even if objects have different data type properties,sort()
This method can still be used to sort arrays.
The solution is to compare attribute values through a comparison function:
Example
cars.sort(function(a, b){return a.year - b.year});
Comparing string properties can be slightly more complex:
Example
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; });
- Previous Page JS Array Search
- Next Page JS Array Iteration