javascript 对象数组排序(按照科目级次)

需求

从后台获取的数据是这样的                  上帝要这样的数组

imageTM截图未命名

背景

从后台获取到表格数据,而后填充到excel.固然是用js来填充的。js 自己的数组具备sort()功能。可是是针对一列数据。这里是两列数据。肿么办?看看w3c教程上说 arrayObject.sort(sortby);
sortby 默认是空的。也就是按照字符串的编码进行排序。
sortby 的做用是干吗?
若是想按照其余标准进行排序,就须要提供比较函数,该函数要比较两个值,而后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具备两个参数 a 和 b,其返回值以下:
•若 a 小于 b,在排序后的数组中 a 应该出如今 b 以前,则返回一个小于 0 的值。
•若 a 等于 b,则返回 0。
•若 a 大于 b,则返回一个大于 0 的值
这就好办了 函数

思路

把结果集保存为一个js 对象数组。而后对对象数组排序。编码

var data=[];
var result=从后台获取的结果集合
for(var i=0;i<result.RowCount;i++){
    data[i]={n:result.getValue(i,"D"),b:result.getValue(i,"E")}
}
function compare(propertyName) {
    return function (object1, object2) {
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if (value2 > value1) {
            return -1;
        } else if (value2 < value1) {
            return 1;
        } else {
            return 0;
        }
    }
}
data.sort(compare("n"));
输出excel.....

理解

js有sort方法,选填参数。参数是一个比较函数。比较函数有两个参数,两个参数是用来比较了,大于,小于,等于。分别返回-1,0,1spa

这样array就能够调用对比函数。excel

相关文章
相关标签/搜索