このlocaleCompare()
関数は、Firefox 拡張機能のメイン コードと Web ワーカー (または chrome ワーカー) で同じように動作しません。
たとえば、メイン コードには次のコードがあります。
var array = ["École", "Frère", "frère", "école"];
array.sort(function(a, b) {
return a.localeCompare(b);
});
console.log('Main: ' + array);
それが示している:
Main: �cole,�cole,Fr�re,fr�re
どちらが正しい並べ替えですか (エンコーディングは私の問題ではありません)。
ワーカーには、次のコードがあります。
var array = ["École", "Frère", "frère", "école"];
array.sort(function(a, b) {
return a.localeCompare(b);
});
self.postMessage(array);
それは印刷します:
Frère,frère,école,�0cole
これは間違った順序です (繰り返しますが、エンコーディングは私の問題ではありません)。
メイン コードでの並べ替えは問題ありませんが、Web ワーカーでの並べ替えは問題ありません。
Web Worker で関数のオプションを変更しようとしましたが、localeCompare()
何も変わりません。
Web ワーカーで並べ替えが異なるのはなぜですか? また、Web ワーカーで並べ替えを正しく行う方法は?
(何らかの理由で、データをメイン コードに送信し、並べ替えを実行して、Web ワーカーに送り返すことができませんでした。それでも順序が間違っています (私に与えますécole,�0cole,Frère,frère
)。)
ご協力いただきありがとうございます。