sort()方法 - 论逐字逐句研究教程的重要性

sort() 方法用于对数组的元素进行排序。

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

  • 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a 等于 b,则返回 0。
  • 若 a 大于 b,则返回一个大于 0 的值。

所以如果一个数组,元素是几个数字 [50,11,16,32,24,99,57,100], 此时直接sort()排序,返回的是[100, 11, 16, 24, 32, 50, 57, 99].

那么,如何把数字按从小到大排序呢:

(function(){
    function sortNum() {
        var tags = new Array();//使用数组作为参数存储容器
        for (var i = 0; i < arguments.length; i++) {
            tags.push(arguments[i]);
        }
        tags.sort(function(a, b){
            return a - b;
        });
        return tags;//返回已经排序的数组
    }

    var result = sortNum(50,11,16,32,24,99,57,100);//传入参数个数不确定
    console.info(result);//显示结果
}());

这里有个题外话:养成一个变成的好习惯,避免全局变量:将函数用(function(){}())包裹起来:

(function(window){
    //...您的代码
}(window));

加一个window参数,是因为 ES 执行JS代码是从里到外,因此把全局变量window对象传进来,就避免了到外层去寻找,提高效率。

时间: 2024-10-13 13:09:21

sort()方法 - 论逐字逐句研究教程的重要性的相关文章

数组的sort方法

今天在看<JavaScript高级程序设计第三版>时,学到了数组的sort方法.知道这个方法,但是一直没仔细研究过,这次发现,它是把数组内的值用toSting()变为字符串再进行比较,这样的话,无法保证排出来的顺序的正确性,比如 var values = [0, 1, 5, 10, 15]; values.sort(); alert(values); //0,1,10,15,5 因为数值 5 虽然小于 10, 但在进行字符串比较时, "10" 则位于 "5&quo

sort方法实际应用详解---javascript中对一个对象数组按照对象某个属性进行排序

转载: 查看原文 在javascript中,对象和数组是两种不同的类型,这和php中的数组概念不同.在javascript中,也有一些精妙的算法,用来对一些对象进行排序.我在面试迅雷的时候,也拿到一道题,当时做题的时候考虑到时间,没有去仔细研究,回来后再读了一些方法,就知道真正的考点在哪里了. 我们现在有一组"学生"对象,包含"名字,年龄"等属性,现在要求一个算法,把这些对象放在一个数组里,可以实现按照年龄对这些对象进行排序. var sdts = [ { name

Python中的sort()方法的使用

本文和大家分享的主要是python中的sort()方法相关知识,一起来看看吧,希望对大家学习python有所帮助. 一.基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说: (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如: students为类对象的list

Python中的sort()方法使用基础

一.基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说: (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如: students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这

Collections中sort()方法源代码的简单分析

Collections的sort方法代码: public static <T> void sort(List<T> list, Comparator<? super T> c) { Object[] a = list.toArray(); Arrays.sort(a, (Comparator)c); ListIterator i = list.listIterator(); for (int j=0; j<a.length; j++) { i.next(); i.

定制对ArrayList的sort方法的自定义排序

java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数 示例: // 外部类的方式 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.uti

javascript sort方法容易犯错的地方

sort方法用来对数组排序非常方便.但是sort(func)这个func参数的构造却很容易混淆. 这个func的作用是,把排序结果里任意相邻两项a,b放入到func里来执行,如果返回值都为-1,则为正序排列,如返回值都为1,则为逆序排列. 例如,[1,3,65,97,45,6,2] 如果要正序,就应该写成[1,3,65,97,45,6,2].sort(function(a, b){return a - b;}), 如果要逆序:[1,3,65,97,45,6,2].sort(function(a,

Array 的sort()方法详解

1.数组的sort()方法排序数字(按升序) 如果要排序数字49.5.9,那么sort()方法排序的结果是49.5.9.这是因为sort()方法默认情况下是进行升序排列.从左往右一位一位比较ASCII码大小,直至比较出大小   (若其中位数不足的补零) 那么我们应该如何利用sort()方法进行排序呢? 首先我们定义一个函数: /*升序*/ function sortNumbleUp(x,y){ return x-y; } /*降序*/ function sortNumbleDown(x,y){

python列表sort方法的两个参数key, reverse

使用列表的sort方法可以进行排序,其中有两个参数用来表示排序的方式,代码: In [7]: a = ['x11','abc323','e26','112ddd'] In [8]: a.sort(key=len, reverse=True) In [9]: a Out[9]: ['abc323', '112ddd', 'x11', 'e26'] In [10]: a.sort(key=lambda x:x[-1]) In [11]: a Out[11]: ['x11', 'abc323', 'e