Как определить пользовательскую функцию сортировки в JavaScript? - PullRequest
51 голосов
/ 15 февраля 2011

Я использую плагин atocomplete.jquery, чтобы предложить ввод текста, в результате я получаю этот массив:

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

Когда я начинаю искать что-то, что начинается с подстроки "te", она показывает сортировку массива следующим образом:

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

Мне нужно что-то вроде этого:

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

Есть идеи?

Ответы [ 4 ]

63 голосов
/ 15 февраля 2011

Возможно, плагин чувствителен к регистру. Попробуйте ввести Te вместо te. Вероятно, вы можете настроить результаты так, чтобы они не учитывали регистр. Этот вопрос может помочь.

Для пользовательской функции сортировки в Array вы можете использовать любую функцию JavaScript и передать ее в качестве параметра методу sort() *1009*, например:

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.

20 голосов
/ 12 мая 2014

Для 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;
    };
}
5 голосов
/ 17 августа 2016

или короче

sortBy(field){
 return (a[field] > b[field]) - (a[field] < b[field])
}
1 голос
/ 20 сентября 2017
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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...