tsagbaaa111:
こんにちは私はJavaScriptでカスタム文字列のコンパレータ機能を実装しようとしています。私は彼らが残りはちょうどアルファベット順にソートされた状態で、他の前に必ずなりたいことを、いくつかの特別な値があります。Iは、アレイ(「非常に重要」「重要」、「」以下で重要)を有する場合、例えば、3つの特殊値(上記のような順序を有していなければならない)であります
["e","c","Less Important","d","Very Important","a",null,"Important","b","Very Important"].
ソートした後、配列があるべき(nullまたは未定義の値、最後で配置する必要があります場合)
["Very Important", "Very Important", "Important", "Less Important" "a","b","c","d","e",null]
どのように私は上記の要件のためのコンパレータ機能を書き込むことができますか?(イムライブラリのコンパレータAPIを使用して、私は、配列が、0,1を返すJavaでのcompareToのようなコンパレータ(とロジックを実装する必要が並べ替えることはできませんので、-1)
どうもありがとう
ニーナショルツ:
あなたは出来る
- 移動
null
下に値を、 - 移動
'Very Important'
トップに文字列を、 - 移動
Important'
先頭に文字列をし、 - 残りの上昇を並べ替えます。
var array = ["Important", "e", "c", "d", "Very Important", "a", null, "b", "Very Important"];
array.sort((a, b) =>
(a === null) - (b === null) ||
(b === 'Very Important') - (a === 'Very Important') ||
(b === 'Important') - (a === 'Important') ||
a > b || -(a < b)
);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }