数组的sort()方法传参疑惑

在默认情况下,sort()方法按升序排列数组项——即最小的值位于前面,最大的值排在后面,为了实现排序,sort()方法会调用每个数组的toString()转型方法,然后比较的就是字符串了。如下所示:

var values = [0, 1, 5, 10, 15];
values.sort();
alert(values);               //0,1,10,15,5

问题出现了,"10"位于"5"的前面,数组的顺序被改变了,这种排序方法在很多情况下都不是最佳方案。
因此ECMA引入了一个sort()方法,这个方法可以接受一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。
以下就是一个简单的比较函数:

function compare(value1, value2) {
       if (value1 < value2) {
           return 1;
        } else if {
           return 1;
        } else {
           return 0; 
        }
}

var values = [0,1, 5, 10, 15];
values.sort(compare);
alert(values);       //0,1,5,10,15

实际上这个compare函数也可以如下来写:

function compare(value1, value2) {
    return value2 - value1;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,207评论 0 6
  • 由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaS...
    2bc5f46e925b阅读 2,004评论 0 16
  • 数组是值的有序集合。每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 JavaScript...
    劼哥stone阅读 1,148评论 6 20
  • 十里大楼 仪表菜场右侧 上海生煎馆 觉得鲜肉的最好吃。肉都蛮新鲜的,咬开都是汤汁,好好吃,而且吃一两个也不感觉腻。...
    饺子蘸醋阅读 222评论 0 0