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就可以調用對比函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM