92 votes

Comment définir une fonction de tri personnalisée en javascript ?

J'utilise le plugin atocomplete.jquery pour suggérer du texte d'entrée, comme résultat j'obtiens ce tableau :

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

Lorsque je commence à rechercher quelque chose qui commence à partir de la te cela me montre un tri de tableau comme ceci :

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

J'ai besoin de quelque chose comme ça :

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

Des idées?

26voto

Lior Points 1151

Pour Objects essayez ceci :

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

19voto

Kamyk.pl Points 209

ou plus court

 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);

1voto

monster_enzy Points 9
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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X