过了一个年人都过傻了。变的一问三不知了。博客也有一个多月没更新了。今天来更新一篇数组对象的多字段排序。
加粗样式排序无非是正序或者倒序。我们先来说一个正序。然后倒序当然是将正序的1和 -1反过来就行了
一般遇到排序这种情况可能大多数人都会想到**sort()**这个方法。
w3chool对sort的介绍是这样的:sort里边有一个说明是我写这个的关键
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

为了实现方便我们的数据将用最简单的1,2,3。看一下我的代码。这种方法应该也不是最简单和效率最高的,如果有更简单的或者更容易的请分享给我。感谢铁子们:

var agentlists = 
[{"ORGCODE": "1", "SALEORGCODE": "1","SALECODE":"3"},
{"ORGCODE": "3", "SALEORGCODE": "2","SALECODE":"1"},
{"ORGCODE": "2", "SALEORGCODE": "3","SALECODE":"2"},
{"ORGCODE": "5", "SALEORGCODE": "2","SALECODE":"2"},
{"ORGCODE": "4", "SALEORGCODE": "1","SALECODE":"3"}];
//按照原机构ORGCODE第一序,原团队SALEORGCODE第二序,人员工号第三序SALECODE
agentlists.sort(function(a,b){
    if (a["ORGCODE"] === b["ORGCODE"]) {
        if(a['SALEORGCODE'] === b["SALEORGCODE"]){
            if (a["SALECODE"] > b["SALECODE"]) {
                return 1;
            } else if (a["SALECODE"] < b["SALECODE"]) {
                return - 1;
            } else {
                return 0;
            }
        }else {
            if (a["SALEORGCODE"] > b["SALEORGCODE"]) {
                return 1;
            } else {
                return - 1;
            }
        } 
    } else {
        if (a["ORGCODE"] > b["ORGCODE"]) {
            return 1;
        } else {
            return - 1;
        }
    }     
})
console.log(agentlists);

当然我们在工作中也会有各种不同的情况。我上边呢这个是个正序。如果你要改成倒序只需要将1和-1的位置调换即可。可能代码执行效率会有点慢。
如果你的字段更多,需要就**return 0;**那里继续进行递归就可以了。