zoukankan      html  css  js  c++  java
  • 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,1

    这样array就可以调用对比函数。

  • 相关阅读:
    【二分+字符串hs】[POI2000] 公共串
    【字符串匹配】【BKDRhash||KMP】
    【LCA】P4281 [AHOI2008]紧急集合 / 聚会
    【LCA专题】各种LCA求法
    【差分约束】POJ3159/LG P1993 小K的农场
    【差分约束】POJ1364/LG UVA515 king
    【差分约束】POJ1201/LG SP116 Intervals
    【差分约束】POJ3159 Candies
    【树形结构】LG P2052 [NOI2011]道路修建
    【拓扑排序+概率】LG P4316绿豆蛙的归宿
  • 原文地址:https://www.cnblogs.com/Dtscal/p/4152930.html
Copyright © 2011-2022 走看看