zoukankan      html  css  js  c++  java
  • JavaScript中对数组的排序

    将下列对象数组,通过工资属性,由高到低排序
    
    
    
            var BaiduUsers = [], WechatUsers = [];
    
            var User = function(id, name, phone, gender, age, salary) {
            this.id = id;
            this.name = name;
            this.phone = phone;
            this.gender = gender;
            this.age = age;
            this.salary = salary;
            };
            User.create = function(id, name, phone, gender, age, salary) {
            return new User(id, name, phone, gender, age, salary);
            };
            BaiduUsers.push(User.create(1, 'tommy', '1111','male', 18, 2800));
            BaiduUsers.push(User.create(2, 'jerry', '2222','male', 28, 5800));
            BaiduUsers.push(User.create(3, 'raobin','3333','female', 14, 1200));
            BaiduUsers.push(User.create(4, 'binbin','4444','male', 23, 9800));
            BaiduUsers.push(User.create(5, 'arthur','5555','female', 22, 3000));
            WechatUsers.push(User.create(1, 'tommy', '1111','male', 20, 4000));
            WechatUsers.push(User.create(2, 'allen', '6666','male', 34, 15800));
            WechatUsers.push(User.create(3, 'raobin','3333','female', 16, 2300));
            WechatUsers.push(User.create(4, 'harvey','7777','male', 30, 29800));
            WechatUsers.push(User.create(5, 'yuyu', '8888','female', 27, 7000));
              
    
            对于一般的数组,可以用sort函数,对于对象数组呢
    
            var points = [40,100,1,5,25,10];
            points.sort(function(a,b){return a-b});
    
    
    
    
            那么考点在哪里呢?实际上在于数组对象的sort方法。
    
            Array.sort(fun)
            fun是一个函数,排序根据这个函数返回值来进行判断,如果返回值小于0表示两个元素不需要交换位置,1表示要用交互位置,0表示相等,实际上<=0等效。
    
            sort方法有两个注意点:
    
            会操作原始数组,经过操作后原始数组发生变化
            默认排序按照字符编码排序,例如,我们有下面的一个例子:
            https://www.cnblogs.com/webcabana/p/7460038.html
    
    
    
            需要定义下sortBy方法,然后进行调用即可
    
            BaiduUsers.sort(sortBy("salary"))
    
            如果存在工资相等的情况,要求按照年纪排序,应该如何定义SortBY方法呢?
    
            var BaiduUsers = [], WechatUsers = [];
            var User = function(id, name, phone, gender, age, salary) {
            this.id = id;
            this.name = name;
            this.phone = phone;
            this.gender = gender;
            this.age = age;
            this.salary = salary;
            };
            User.create = function(id, name, phone, gender, age, salary) {
            return new User(id, name, phone, gender, age, salary);
            };
            BaiduUsers.push(User.create(1, 'tommy', '1111','male', 18, 10000));
            BaiduUsers.push(User.create(2, 'jerry', '2222','male', 28, 10000));
            BaiduUsers.push(User.create(3, 'raobin','3333','female', 14, 1200));
            BaiduUsers.push(User.create(4, 'binbin','4444','male', 23, 9800));
            BaiduUsers.push(User.create(5, 'arthur','5555','female', 22, 10000));
    
    
    
    
    
    
            function sortBy(field1,field2) {
            return function(a,b) {
            if(a.field1 == b.field1) return a.field2 - b.field2;
            return a.field1 - b.field1;
            }
            }
    
            BaiduUsers.sort(sortBy("salary","age"));
              
    
    
    
    
            貌似不正确ing
    

      

  • 相关阅读:
    数据结构(四十)平衡二叉树(AVL树)
    数据结构(三十九)二叉排序树
    数据结构(三十八)静态查找表(顺序查找、二分查找、插值查找、斐波那契查找、线性索引查找)
    数据结构(三十七)查找的基本概念
    数据结构(三十六)关键路径
    数据结构(三十五)拓扑排序
    数据结构(三十四)最短路径(Dijkstra、Floyd)
    数据结构(三十三)最小生成树(Prim、Kruskal)
    字符串匹配算法之KMP
    最长公共子序列(Longest common subsequence)
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/11187293.html
Copyright © 2011-2022 走看看