• Javascript排序问题


    1)一个简单的排序:对于一般的数组可以直接使用sort,默认是升序;

      

    var values = [1, 3, 2, 4, 5];
    values.sort();

    2)sort本身可以接受一个参数,是一个函数对象的引用,来实现自定义的排序;

    function compare(value1, value2) {
        if(value1 < value2) {
            return -1;
        }
        if(value1 > value2) {
            return 1;
        } else {
            return 0;
        }
    }
    
    var values= [1, 3, 2, 4, 5]; 
    values.sort(compare);

    3)为了实现指明按照对象的属性来排序,我们可以定义一个函数,这个函数接收一个属性,返回一个函数,并将这个函数作为sort的参数来实现

    function createComparisonFunction(propertyName) {
        return function(object1, object2) {
            var value1 = object1[propertyName];
            var value2 = object2[propertyName];
    
            if(value1 < value2) {
                return -1;
            }
            if(value1 > value2) {
                return 1;
            } else {
                return 0;
            }
        };
    }
    
    
    var data = [{name: "zachary", age:28}, {name: "Kin", age: 21}];
    data.sort(createComparisonFunction("age"));

    同时上述的方法可以针对于我们自定义的对象(类),如下:

    function createComparisonFunction(propertyName) {
        return function(object1, object2) {
            var value1 = object1[propertyName];
            var value2 = object2[propertyName];
    
            if(value1 < value2) {
                return -1;
            }
            if(value1 > value2) {
                return 1;
            } else {
                return 0;
            }
        };
    }
    
    function Person(name, age) {
        this.name = name;
        this.age= age;
        this.friends = ["Shelby", "Court"];
    }
    //@overwirte the prototype
    Person.prototype = {
        constructor : Person,
        sayName : function() {
            console.log(this.name);
        }
    };
    
    var Person1 = new Person("Nicholas", 29);
    var Person2 = new Person("Kin", 21);
    var Person3 = new Person("Mike", 30);
    
    var Personset = [Person1, Person2, Person3];
    Personset.sort(createComparisonFunction("age"));
  • 相关阅读:
    201521123098 《Java程序设计》 第5周学习总结
    201521123098 《Java程序设计》 第4周学习总结
    201521123098 《Java程序设计》第3周学习总结
    Beta阶段Scrum 冲刺博客合集
    项目复审——Alpha阶段
    事后诸葛亮分析
    展示博客
    测试与发布
    Alpha阶段敏捷冲刺总结
    敏捷冲刺七
  • 原文地址:https://www.cnblogs.com/kinthon/p/4842394.html
Copyright © 2020-2023  润新知