如何在JavaScript中定义自定义sortingfunction?

我使用atocomplete.jquery插件来build议input文本,因为我得到这个数组:

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

当我开始search那些从“te”子串开始的东西时,它显示了我这样的数组sorting:

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

我需要这样的东西:

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

有任何想法吗?

这可能是该插件区分大小写。 尝试input“Te”而不是“te”。 您可能可以将您的结果设置为不区分大小写。 这个SO问题可能会有帮助。

对于数组上的自定义sorting函数,可以使用任何javascript函数,并将其作为parameter passing给像这样的数组sorting方法 –

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

对于Objects试试这个:

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

或更短

 sortBy(field){ return (a[field] > b[field]) - (a[field] < b[field]) } 
 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; }