JavaScript 数组排序
1.数组排序- - -sort()
根据首字符进行排序,a-z。注意:会改变原数组
var array=["c","d","e","a"]document.write(array.sort())
a,c,d,e
2.反转数组- - - reverse()
表面意思,前后反转。注意:会改变原数组
var array=["a","b","c","d"]document.write(array.reverse())
d,c,b,a
3.数字排序- - -sort()+比值函数
按数字大小排序
function sortNumber(a, b){return b - a}var arr = new Array(6)arr[0] = "10"arr[1] = "5"arr[2] = "40"arr[3] = "25"arr[4] = "1000"arr[5] = "1"document.write(arr + "<br />")document.write(arr.sort(sortNumber))
结果(这里需要写一个比值函数,不然就会按照第一个数字进行排序),从小到打就a,b交换位置。
10,5,40,25,1000,1
1000,40,25,10,5,1
3.1比值函数
比较函数的目的是定义另一种排序顺序。
比较函数应该返回一个负,零或正值,这取决于参数:
function(a, b){return a-b}
当 sort() 函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序。
实例:
当比较 40 和 100 时,sort() 方法会调用比较函数 function(40,100)。
该函数计算 40-100,然后返回 -60(负值)。
排序函数将把 40 排序为比 100 更低的值。
您可以使用下面的代码片段来测试数值和字母排序:
<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>
4.随机顺序排序数组
也是基于比值函数的,通过Math.random()生成一个0-1的小数
function sortArray(a, b){return 0.5-Math.random()}var array=[1,2,3,4]document.write(array)document.write("<br/>")document.write(array.sort(sortArray))
5.查找数组最大值(最小值)
除了使用sort+比值函数来查找以外,还可以通过Math.max.apply与Math.min.apply直接查找值
var array=[1,2,3,4]document.write(Math.max.apply(null, array))document.write("<br/>")document.write(Math.min.apply(null, array))
4
1
6.对象属性进行排序(高级)
var array = [{id: 9, name: 'jack' },{id: 15, name: 'tom' },{id: 1, name: 'lili' }]function sortArray(a, b) {return a.id - b.id}array.sort(sortArray)for (var i = 0; i < array.length; i++) {document.write(array[i].id + ':' + array[i].name)document.write("<br/>")}
1:lili
9:jack
15:tom