zoukankan      html  css  js  c++  java
  • javascript 数组排序之 sort()

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge,Chrome=1">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <meta name="renderer" content="webkit">
        <title>Array.sort</title>
    </head>
    <body>
        <script>
        //很多人不清楚数组排序的具体原理.
        var arr=[1,2,3,4,5,10,20,30,40];
        console.log(arr.sort());    //[1, 10, 2, 20, 3, 30, 4, 40, 5]
        //如果sort就提供我们这样一个排序功能,那不要也罢.
        //实际上,sort默认是把数组的每一项转换成字符串,再进行排序的.
        //所以,只看排序后数组中每一项的第一位的话,你发现它干的不错.
        //但是我们要告诉它,按照我们的规则排序,也就是从小到大排序.
        //sort方法可以接受一个函数作为参数,这个函数就是我们告诉javascript数组排序的规则.
        arr.sort(function(value1,value2){
            if(value1<value2){
                return -1;
            } else if(value1>value2){
                return 1;
            }else{
                return 0;
            } 
        });
        console.log(arr);//[1, 2, 3, 4, 5, 10, 20, 30, 40]
        //很多人迷惑了.其实只要习惯就好,这就是javascript的一个规则.或者说sort判断排序的一个规则.
        //两个参数value1 和 value2 分别代表数组中传入的每一项. value1 代表前一项,value2 代表后一项.
        //如果前一项 < 后一项  返回-1,否则返回1;这是什么意思呢?
        //如果你想太多了,就赶紧打住.
        //我是这样理解的:
        //如果我希望数组从小到大排序.那么我把数组的前一项和后一项作为参数传入比较函数中.
        //函数判断我传入的两个参数.如果第一项比第二项小,那么说明这两项已经是从小到大排序了.不需要再排了,返回-1(相当于标记了不需要排序的数)
        //如果第一项比第二项大,那么这两项需要进行排序,返回1(相当于true);
        //如果两项相等,返回0.(相当于false),不需要排序.
        //就这么简单.如果想知道更深层次的东西,就不是这里能学到的了.
        //现在我想从大到小排列:
        arr.sort(function(value1,value2){
            if(value1<value2){
            //我希望数组从大到小排序,前一项应该大于后一项,所以这个if()的条件,不符合我期望的数组中的规则,需要排序,返回1(正数)
                return 1;
            }else if(value1>value2){
            //符合我期望的数组中的规则,不需要排序,返回-1(负数)
                return -1;
            }else{
            //相等,不需要排序,返回0
                return 0;
            }
        });    
        console.log(arr);//[40, 30, 20, 10, 5, 4, 3, 2, 1]
        //完毕
        //基于幻想的理解并不算是理解,要想真正理解sort,还需要查看语言核心中的具体实现.
        </script>
    </body>
    </html>
  • 相关阅读:
    boundandbranch method
    图像格式PPM,PGM和PBM
    感兴趣文章
    生成数据库脚本
    安徽太和华药会总结
    正则表达式语法参考
    xml
    对项目开发有很大帮助的jquery网站
    增强 VSS 的文件共享安全性
    支付宝及时到帐接口使用详解
  • 原文地址:https://www.cnblogs.com/zhangfengyang/p/4893888.html
Copyright © 2011-2022 走看看