カスタム比較機能を使用して配列をソートしようとしています。
比較関数は、2 つの特定の要素間の順序のみを考慮します。
以下の例では、ソート後に 'a' が 'b' の前に表示されると予想されますが、そうではありません。
var ar = ["b", "c", "d", "a"];
ar.sort(function(x, y) {
if (x == 'a' && y == 'b') { return -1; }
if (x == 'b' && y == 'a') { return 1; }
return 0; // only the order between 'a' and 'b' matters.
});
console.log(ar);
// ar is still ["b", "c", "d", "a"];
では、なぜ「a」が「b」の前にないのでしょうか? 回避策はありますか?