js實現iview表格 排名列


 (有誤,請勿觀看)

一、排名的簡單實現


//排名例子1

//需要排名的數組
//var myArray = [5,7, 7, 9, 8, 6, 23];

//新數組
//var thisArray = [];

//將需要排名的數組中元素存入新數組,同時存入原始索引和新索引默認為0
//for (var i = 1; i <= myArray.length; i++) {


// thisArray.push({ myValue: myArray[i - 1], oldIndex: i ,newIndex:0});
//}

//將新數組按照值的大小排序
//thisArray.sort(function (a, b) {
// return b.myValue - a.myValue;
//});

//將排序后順序存入新索引
//for (var i = 1; i <=thisArray.length; i++) {
// thisArray[i - 1].newIndex = i;
//}

//再根據原始索引排序
//thisArray.sort(function (a, b) {
// return a.oldIndex - b.oldIndex;
//});

//此時獲取到的就是排序后的值了,而newIndex就是排名。

//console.log(thisArray);

//如果想單獨獲取排名可以遍歷thisArray.newIndex 存入另一個新的數組

 

//排名例子2
//var e2 = 20;
//var e3 = 10;
//var e4 = 70;
//var e5 = 20;
//var e6 = 50;
//var arrArray = [];
//for (var i = 2; i <= 6; i++) {
// arrArray.push({ e: window["e" + i], p: i });
//} 
//arrArray.sort(function (a, b) {
// return b.e - a.e;
//});
//for (var i = 0; i < arrArray.length; i++) {
// window["p" + arrArray[i].p] = i + 1;
//}
//console.dir(arrArray);
//console.log(p2);
//console.log(p3);
//console.log(p4);
//console.log(p5);
//console.log(p6);

 

二、實際數據及效果

 

三  項目中實現排名列的方法

    //缺點:循環過多且嵌套循環,日后數據量大幅增加時可能導致瀏覽器卡慢。
    //優點:服務器端消耗性能很低。
    //改進思路:如何減少循環次數
    function myTableSort(data, yearList, regionNameList, myParam) {

        var mydata = data.concat();
        for (var j = 0; j < yearList.length; j++) {
            /****************取值********************/
            //參數數據
            var paramData = [];
            //根據年份、參數獲取某年某月參數數據
            for (var i = 0; i < mydata.length; i++) {
                if (mydata[i].Year == yearList[j]) {
                    //這里可以存入對象類型存入 參數數據、 Year和RegionName,后兩者作為排序后賦值時的判斷條件
                    paramData.push({ myValue: mydata[i][myParam], RegionName: mydata[i].RegionName, Year: mydata[i].Year });
                }
            }
            /**************** 處理********************/
            //對某年排名后數據
            var thisArray = [];
            //存入值和原始索引,新索引默認為0
            for (var i = 1; i <= paramData.length; i++) {

                thisArray.push({ myValue: paramData[i - 1].myValue, RegionName: paramData[i - 1].RegionName, Year: paramData[i - 1].Year, oldIndex: i, newIndex: 0 });
            }
            //根據值排序,
            thisArray.sort(function (a, b) {
                return b.myValue - a.myValue;
            });
            //存入排序后的新索引
            for (var i = 1; i <= thisArray.length; i++) {
                thisArray[i - 1].newIndex = i;
            }
            //根據原始索引對數組排序
            thisArray.sort(function (a, b) {
                return a.oldIndex - b.oldIndex;
            });
            //此時新索引就是排名
            //console.log(thisArray);
            /**************** 賦值 ********************/
            //將當年排名后數據 賦值到mydata
            for (var i = 0; i < mydata.length; i++) {
                //如果年份相等
                if (mydata[i].Year == yearList[j]) {
                    //城市名稱循環賦值單行
                    for (var k = 0; k < regionNameList.length; k++) {
                        //如果參數值相等則賦值排名
                        if (mydata[i].RegionName == thisArray[k].RegionName && mydata[i].Year == thisArray[k].Year && mydata[i][myParam] == thisArray[k].myValue) {
                            mydata[i].IndexRank = thisArray[k].newIndex;
                            //  console.log("綜合指數:" + mydata[i][myParam], "排名:" + thisArray[k].newIndex);
                        }
                    }
                }
            }

        }

        return mydata;
    }

  

四、數據獲取和前期處理:

    function loadChart() {

        $.ajax({
            url: '@Url.Action("BasicEvaluationData")',
            data: {},
            type: "post",
            dataType: "json",
            success: function (result) {
                if (result != undefined && result != null && result.success == true) {
                    var paramsList = ["UrbanEcologicalIndex", "EcologicalAssetIndex", "EcologicalLandscapeIndex", "EcologicalPressureIndex", "EcologicalConstructionIndex", "EcologicalServiceIndex"];
                    var regionNameList = [];
                    var data = [];
                    var yearList = [];
                    for (var i = 0; i < result.rows.length; i++) {
                        var row = result.rows[i];
                        var rowObj = new Object();
                        for (var j in row) {
                            rowObj[j] = row[j];
                        }
                        regionNameList.push(rowObj.RegionName);
                        yearList.push(rowObj.Year);
                        data.push(rowObj);
                    }
                    yearList = Distinct(yearList);
                    regionNameList = Distinct(regionNameList);
                    //console.dir(regionNameList);
                    //console.dir(yearList);

                    myTable(yearList, regionNameList, data, paramsList);
                    myEcharts(yearList, regionNameList, data, paramsList);


                }
            }
        });

    }

 


免責聲明!

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



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