簡體   English   中英

如何在javascript中定義自定義排序函數?

[英]How to define custom sort function in javascript?

我使用atocomplete.jquery插件來建議輸入文本,結果我得到了這個數組:

['White 023','White','White flower', 'Teatr']

當我開始搜索從te子字符串開始的內容時,它顯示了這樣的數組排序:

'White','White 023','White flower', 'Teatr'

我需要這樣的東西:

 'Teatr','White','White 023','White flower'

有任何想法嗎?

可能是插件區分大小寫。 嘗試輸入Te而不是te 您可能可以將結果設置為不區分大小寫。 這個問題可能會有所幫助。

對於Array上的自定義排序函數,您可以使用任何 JavaScript 函數並將其作為參數傳遞給Arraysort()方法,如下所示:

 var array = ['White 023', 'White', 'White flower', 'Teatr']; array.sort(function(x, y) { if (x < y) { return -1; } if (x > y) { return 1; } return 0; }); // Teatr White White 023 White flower document.write(array);

更多關於 Array.sort 的信息。

對於Objects試試這個:

function sortBy(field) {
  return function(a, b) {
    if (a[field] > b[field]) {
      return -1;
    } else if (a[field] < b[field]) {
      return 1;
    }
    return 0;
  };
}

或更短

 function sortBy(field) { return function(a, b) { return (a[field] > b[field]) - (a[field] < b[field]) }; } let myArray = [ {tabid: 6237, url: 'https://reddit.com/r/znation'}, {tabid: 8430, url: 'https://reddit.com/r/soccer'}, {tabid: 1400, url: 'https://reddit.com/r/askreddit'}, {tabid: 3620, url: 'https://reddit.com/r/tacobell'}, {tabid: 5753, url: 'https://reddit.com/r/reddevils'}, ] myArray.sort(sortBy('url')); console.log(myArray);

function msort(arr){
    for(var i =0;i<arr.length;i++){
        for(var j= i+1;j<arr.length;j++){
            if(arr[i]>arr[j]){
                var swap = arr[i];
                arr[i] = arr[j];
                arr[j] = swap;
            }
        }
    }
return arr;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM