web-dev-qa-db-ja.com

JavaScriptでカスタムソート機能を定義するには?

私はatocomplete.jqueryプラグインを使用して入力テキストを提案し、その結果、この配列を取得します:

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

「te」部分文字列から始まるものを検索し始めると、次のような配列ソートが表示されます。

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

次のようなものが必要です。

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

何か案は?

54
kirugan

プラグインでは大文字と小文字が区別される可能性があります。 Teの代わりにteを入力してください。大文字と小文字を区別しないように結果をセットアップすることができます。これ 質問 が役立つかもしれません。

Arrayのカスタムソート関数の場合、任意のJavaScript関数を使用して、パラメーターとして次のようにArraysort()メソッドに渡すことができます。

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の詳細はこちら

66
erickb

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;
    };
}
20
Lior Elrom

以下

sortBy(field){
 return (a[field] > b[field]) - (a[field] < b[field])
}
5
Kamyk.pl
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;
}
0
monster_enzy