如何在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; }