Javascript 使用Knockout.sort()对JSON数据进行排序

Javascript 使用Knockout.sort()对JSON数据进行排序,javascript,jquery,json,sorting,knockout.js,Javascript,Jquery,Json,Sorting,Knockout.js,我可以使用Knockout的.sort()对数据进行排序。但是,当我尝试在用户单击时进行动态排序时,排序就会失控。这是我的密码: var patientReport=[{“名字”:“莱尔”,“姓氏”:“埃里克森”,“患者id”:1000},{“名字”:“詹娜”,“姓氏”:“巴尔”,“患者id”:1001},{“名字”:“雪莉”,“姓氏”:“德拉克鲁兹”,“患者id”:1002},{“名字”:“尼辛”,“姓氏”:“王”,“患者id”:1003},{“名字”:“伊冯”,“姓氏”:“罗夏”,“患者i

我可以使用Knockout的.sort()对数据进行排序。但是,当我尝试在用户单击时进行动态排序时,排序就会失控。这是我的密码:

var patientReport=[{“名字”:“莱尔”,“姓氏”:“埃里克森”,“患者id”:1000},{“名字”:“詹娜”,“姓氏”:“巴尔”,“患者id”:1001},{“名字”:“雪莉”,“姓氏”:“德拉克鲁兹”,“患者id”:1002},{“名字”:“尼辛”,“姓氏”:“王”,“患者id”:1003},{“名字”:“伊冯”,“姓氏”:“罗夏”,“患者id”:1004}{“姓”:“利奥”,“姓”:“荷兰”,“病人id”:1005},{“姓”:“梅林达”,“姓”:“柯蒂斯”,“病人id”:1006},{“姓”:“奥兰多”,“姓”:“彼得斯”,“病人id”:1007},{“姓”:“米里亚姆”,“姓”:“贝茨”,“病人id”:1008},{“姓”:“奥托”,“姓”:“赫尔利”,“病人id”:1009},{“姓”,“多里斯”:“姓”:伯德,“病人编号:1010}];
var myObservableArray=ko.observableArray(patientReport);
$('.sort_header')。在('click',function()上{
var data=$(this.data('header');
sortRows(数据);
});
函数sortRows(行){
myObservableArray.sort(
功能(左、右){
返回left.row==right.row?0:(left.row}
您需要使用
左[row]
而不是
左.row
(与
相同)。按照这种方式,您试图按实际名为
“row”
的属性进行排序。使用方括号语法可以使用变量
row
指定名称的属性

function sortRows(row) {
  myObservableArray.sort(
    function(left, right) {
      return left[row] == right[row] ? 0 : (left[row] < right[row] ? -1 : 1);
    }
  );    
}
函数sortRows(行){
myObservableArray.sort(
功能(左、右){
返回左[行]==右[行]?0:(左[行]<右[行]?-1:1);
}
);    
}

为什么要使用jquery click而不是knockout click?因为我是knockout新手。感谢您对knockout的指导。宾果,谢谢。