javascript 函数2——对象排序

<!DOCTYPE html>
<html>
<head>
    <title>javascript排序</title>
    <meta charset="UTF-8">

</head>
<body>
<div id="person"></div>

<script type="text/javascript">
    //        //根据数字进行函数的排序
    //        function sortByNum(a,b){
    //            return a-b;
    //        }
    //        var as = [1,2,"11","33","12",190];
    //        //对于js而言,默认是按照字符串来实现排序的
    //        as.sort(sortByNum);
    //        alert(as);

    //测试根据对象排序
    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    var p1 = new Person("c",23);
    var p2 = new Person("a",53);
    var p3 = new Person("b",15);

    var ps = [p1,p2,p3];
    ps.sort(sortByProperty("age"));

    function show(){
        var p = document.getElementById("person");
        for(var i=0;i<ps.length;i++){
            p.innerHTML+=ps[i].name+","+ps[i].age+"<br/>";
        }
    }

    /**
     * 使用以下方法来处理排序,带来的问题是需要每一个属性都设置一个函数,显然不灵活
     * 但是如果通过函数的返回值调用就不一样
     * @param obj1
     * @param obj2
     * @returns {number}
     */


    function sortByProperty(propertyName){
        var sortFun = function(obj1,obj2){
            if(obj1[propertyName] > obj2[propertyName]){
                return 1;
            }else if(obj1[propertyName] == obj2[propertyName]){
                return 0;
            }else{
                return -1;
            }
        }

        return sortFun;

    }







    function sortByName(obj1,obj2){
        if(obj1.name > obj2.name){
            return 1;
        }else if(obj1.name==obj2.name){
            return 0;
        }else{
            return -1;
        }
    }


    function sortByAge(obj1,obj2){
        return obj1.age-obj2.age;
    }

    show();


    </script>


    </body>
</html>

  

posted on 2015-02-07 14:13  aicpcode  阅读(99)  评论(0编辑  收藏  举报

导航