JavaScript 数组排序 您所在的位置:网站首页 js按照指定顺序排序 JavaScript 数组排序

JavaScript 数组排序

2023-06-28 22:06| 来源: 网络整理| 查看: 265

目录

1、数组排序

2、使用排序函数

1、数组排序

数组排序是一项重要的操作,Array 对象定义了两个方法来调整数组顺序,如下图:

数组方法数组reverse()在原数组的基础上颠倒数组中元素的顺序sort()对数组元素进行排序

reverse() 能够在原数组的基础上颠倒数组元素的排列顺序,该方法不需要参数。

var a = [1,2,3,4,5]; //定义数组 a.reverse(); //颠倒数组顺序 alert(a); //这回数组[5,4,3,2,1]

sort() 方法能够根据一定条件对数组元素进行排序。如果调用 sort() 方法时没有传递参数,则按字母顺序对数组中的元素进行排序。

var a = ["a","e","d","b","c"]; //定义数组 a.sort(); //按字母顺序对元素进行排序 alert(a); //返回数组[a,b,c,d,e]

使用该方法时,应该注意下面几个问题。

(1)所谓的字母顺序,实际上是根据字母在字符编码表中的顺序进行排列的,每个字符在字符表中都有一个唯一的编号。

(2)如果元素不是字符串,则 sort() 方法会试图把数组的元素都转换成字符串,以便进行比较。

(3)在排序时,sort() 方法将根据元素值进行逐位比较,而不是根据字符串的个数进行排序。

var a = ["aba","baa","aab"]; /定义数组 a.sort(); //按字母顺序对元素进行排序 alert(a); //返回数组[aab,aba,baa]

在排序时,首先比较每个元素的第一个字符,在第 1 个字符相同的情况下,再比较第 2 个字符,依此类推。

(4)在任何情况下,数组中 undefined 的元素都被排列在数组末尾。

(5)sort() 方法是在原数组基础上进行排序操作的,不会创建新的数组。

2、使用排序函数

sort() 方法不仅仅按字母顺序进行排序,还可以根据其他顺序执行操作。这时就必须为方法提供一个函数参数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。排序函数应该具有两个参数 value1 和 value2,其返回值如下。

如果根据自定义评判标准,value1 小于 value2,在排序后的数组中 value1 应该出现在 value2 之前,就返回一个小于 0 的值。

如果 value1 等于 value2,在排序后的数组中 value1 和 value2 的位置不发生变化,就返回 0。

如果 value1 大于 value2,在排序后的数组中 value1 应该出现在 value2 之后,就返回一个大于 0 的值。

在下面例子中,将根据排序函数比较数组中每个元素的大小,并按从小到大的顺序执行排序:

function compare(value1,value2){ //排序函数 if(valuel< value2){ return 1; }else if (value1 > value2){ return -1; }else{ return 0; } function compare(value1,value2){ //排序函数的改写 return (value2 - value1) //返回比较参数 } var a = [3,1,2,4,5,7,6,8,0,9]; //定义数组 a.sort(compare); //根据数字大小由小到大进行排序 alert(a); //返回数组[0,1,2,3,4,5,6,7,8,9]

上面对排序函数做了改进,由于比较函数通过返回一个小于零、等于零或大于零的值来影响排序结果,因此减法操作就可以适当地处理所有这些情况。

如果要按从大到小的顺序执行排序,则可以让返回值取反。代码如下:

function compare(value1,value2){ //排序函数 return - (value2 - value1) //返回比较参数 } var a = [3,1,2,4,5,7,6,8,0,9]; //定义数组 a.sort(compare); //根据数字大小由小到大进行排序 alert(a); //返回数组[9,8,7,6,5,4,3,2,1,0]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有