【问题标题】:Sort by descending using underscore JS使用下划线 JS 降序排序
【发布时间】:2023-04-04 04:42:01
【问题描述】:

我有下面的代码,我需要根据 (y) 的值通过下划线 JS 进行排序。

请在下面找到我的代码。我正在尝试先上升然后反转。不幸的是,它根本没有为我进行排序,而是显示数据而不进行排序。

        function getMessageNames(){
        var rowIter = 1;
        //document.getElementById("demo2").innerHTML += "from getMessageNames="+calltypes;
        for (var i in calltypes){
            keyId = calltypes[i].label;
            for (var index in keyMsgNames){
                if(keyMsgNames[index].Id == keyId){
                    var row = {"label":keyMsgNames[index].Name,"y":calltypes[i].y};
                    messageNames.push(row);
                    break;
                }
            }


// Result: 
//document.getElementById("demo2").innerHTML += "descending="+descending;
        }

            var ascending = _.sortBy(messageNames, ['y']); 
// Then get DESC 
var descending = ascending.reverse(); 
        for (var index in descending){
            addRow("CallTable", [ descending[index].label, descending[index].y], rowIter++);
        }
        createChart(descending,"Distribution on Key Messages",chartContainer);
    }

function createChart(data,title,container){
    var chart = new CanvasJS.Chart(container, {
                animationEnabled: true,
                title: {
                    text: title
                },
                data: [{
                    type: "pie",
                    startAngle: 240,
                    yValueFormatString: "",
                    indexLabel: "{label} '('{y}')'",
                    dataPoints: data
                }]
            });
            chart.render();
}

 function addRow(tblName, colData, rowNum){
    var table = document.getElementById(tblName);
    var tableRow = table.insertRow(rowNum);

    for (var index in colData){
        var cell = tableRow.insertCell(index);
        cell.innerHTML = colData[index];
    }
}

【问题讨论】:

    标签: javascript json sorting underscore.js


    【解决方案1】:

    sortBy 需要一个属性数组

    替换

    var ascending = _.sortBy(messageNames, 'y'); 
    

    var ascending = _.sortBy(messageNames, ['y']); 
    

    【讨论】:

    • 这就是答案。查看 _.underscore 文档_.sortBy(list, iteratee, [context])
    • 我已经把它放在上面的格式中了。但是当我使用降序在 html 上显示时,它不起作用。请在上面找到修改后的代码。它将数据显示为 [6,6,7,6]。
    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 2015-10-11
    • 2013-09-23
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    相关资源
    最近更新 更多