2017-12-05 29 views
0

私は、(y)の値に基づいてアンダースコアJSでソートする必要がある以下のコードがあります。アンダースコアを使用して降順ソート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]; 
    } 
} 

答えて

2

sortByプロパティ

の配列は、これが答えである

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

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

を交換期待。 _.underscoreのドキュメント '_.sortBy(list、iteratee、[context]) 'を見てください。 –

+0

私はそれを上記のフォーマットにしました。しかし、私が降下を使ってhtmlを表示すると、それは機能しません。上記の変更されたコードを見つけてください。データは[6,6,7,6]と表示されます。 –

関連する問題