Sort ng Array ng JavaScript

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

Try It Yourself

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

Try It Yourself

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

Try It Yourself

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

Try It Yourself

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>

Try It Yourself

以随机顺序排序数组

Example

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

Try It Yourself

查找最高(或最低)的数组值

JavaScript 不提供查找数组中最大或最小值的内置函数。

不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。

升序排序:

Example

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// 现在 points[0] 包含最低值
// 而 points[points.length-1] 包含最高值

Try It Yourself

降序排序:

Example

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// 现在 points[0] 包含最高值
// 而 points[points.length-1] 包含最低值

Try It Yourself

如果您仅仅需要找到最高或最低值,对整个数组进行排序是效率极低的方法。

对数组使用 Math.max()

您可以使用 Math.max.apply 来查找数组中的最高值:

Example

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

Try It Yourself

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

Try It Yourself

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

Try It Yourself

此函数遍历数组,用找到的最低值与每个值进行比较:

示例(查找 Min)

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

Try It Yourself

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

Try It Yourself

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

Try It Yourself