JavaScript 数组排序
sort() 方法以字母顺序进行排序
var fruits = ["banana", "orange","apple"]; fruits.sort();
reverse() 方法反转数组中的元素。
fruits.reverse();
默认的sort() 函数按照字符串顺序对值进行排序。
该函数很合适字符串("A"会排在"B之前")。
这里还有种比值函数
比较函数的目的是定义另一种排序顺序。
比较函数应该返回一个负数,零或正值,这取决于参数:
function(a, b){return a-b}
当sort()函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负,零,正值)对这些值进行排序。
<button onclick="myFunction1()">以字母顺序排序</button> <button onclick="myFunction2()">以数字升序顺序排序</button> <button onclick="myFunction3()">以数字降序顺序排序</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; } function myFunction3() { points.sort(function(a, b){ return b - a }); document.getElementById("demo").innerHTML = points; } </script>
随机排序数组
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
对数组使用Math.max()
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1,2,3]) = Math.max(1,2,3)
对数组使用Math.min()
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1,2,3]) = Math.min(1,2,3)
排序对象数组
如果在数组中包含对象如何进行排序
var cars = [ {type: "Volvo", year: 2020}, {type: "Saab", year: 2021}, {type: "BMW", year: 2022} ]; cars.sort(function(a , b) {return a.year - b.year}); function displayCars() { document.getElementById("demo").innerHTML = cars[0].type + " " + cars[0].year + "<br>" + cars[1].type + " " + cars[1].year + "<br>" + cars[2].type + " " + cars[2].year; }
比较字符串属性
var cars = [ {type: "Volvo", year: 2020}, {type: "Saab", year: 2021}, {type: "BMW", year: 2022} ]; 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; }); function displayCars() { document.getElementById("demo").innerHTML = cars[0].type + " " + cars[0].year + "<br>" + cars[1].type + " " + cars[1].year + "<br>" + cars[2].type + " " + cars[2].year; }