码迷,mamicode.com
首页 > 编程语言 > 详细

javascript 函数2——对象排序

时间:2015-02-07 15:48:44      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

<!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>

  

javascript 函数2——对象排序

标签:

原文地址:http://www.cnblogs.com/aicpcode/p/4278756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!