2016-08-25 122 views
0

進出口使用劍道和打字稿我的應用程序和我有點IP地址行無法弄清楚如何排序與字符串表示的IPv4地址如何在劍道UI電網

排序必須看起來像這樣

1.1.1.1 

10.1.1.1 

50.1.1.1 

100.1.1.1 

100.2.1.1 

255.255.255.255 

內gridColumns我已經試過這樣的事情:

 { 
      field: "sourceIP", 
      title: this.$filter('translate')('tcMetadata.modules.widgets.tcConnectionsGrid.gridHeaders.sourceIP'), 
      type:"string", 
      sortable: { 
       compare: function(a,b){ 
        var arr = [that.ipaddressregex(a.sourceIP), that.ipaddressregex(b.sourceIP)]; 
        arr = arr.sort(); 
        console.log(arr, "ARRRRRRRRRRRRRRRRRR"); 
        return arr[0]; 
       } 
      } 
     } 

哪裏that.ipaddressregex功能是:

public ipaddressregex(ip) { 
    ip = ip.split(".").map(function(i) { 
     return ("00"+i).slice(-3); 
    }).join("."); 
    ip = ip.replace(/\./g, ""); 
    return ip; 
} 

功能只是增加了零的空場,並移除點 12.10.1.1轉化爲012010001001

,然後javascript的sort()方法會照顧

但我認爲我的問題是什麼,我return在我的情況下return arr[0];

回答

1

您的比較函數應返回下面的僞代碼中的值:

這是用來比較的值
function compare(a, b, descending) { 
     if (a is less than b by some ordering criterion) { 
     return -1; 
     } 

     if (a is greater than b by the ordering criterion) { 
     return 1; 
     } 

     // a must be equal to b 
     return 0; 
    } 

http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-columns.sortable.compare

Javascript函數。它與Array.sort接受的比較函數具有相同的簽名。

一個值得注意的例外是,我們還提供第三個參數,指示排序方向(真爲降序)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

+0

Ÿ已經修好了,我意識到它必須返回1或0或-1,但謝謝 –