4

この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)。)

ご協力いただきありがとうございます。

4

1 に答える 1