Как определить пользовательскую функцию сортировки в javascript?
Я использую плагин atocomplete.jquery, чтобы предлагать входной текст, в результате я получаю этот массив:
['White 023','White','White flower', 'Teatr']
Когда я начинаю искать что-то, начинающееся с подстроки "te", это показывает сортировку массива следующим образом:
'White','White 023','White flower', 'Teatr'
Мне нужно что-то вроде этого:
'Teatr','White','White 023','White flower'
Любые идеи?
Ответы
Ответ 1
Возможно, что плагин чувствителен к регистру. Попробуйте ввести Te
вместо te
. Вероятно, ваша настройка результатов может быть нечувствительной к регистру. Этот вопрос может помочь.
Для пользовательской функции сортировки в Array
вы можете использовать любую функцию JavaScript и передать ее как параметр в метод sort()
Array
sort()
следующим образом:
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);
Ответ 2
Для 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;
};
}
Ответ 3
или короче
sortBy(field){
return (a[field] > b[field]) - (a[field] < b[field])
}
Ответ 4
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;
}