私は次のコードを持っています:
var r = [
['Pipe repair', '3 Bravo', 'Household Baker'],
['New connection', '5 Delta', 'Household Griffith'],
['Pipe repair', '3 Bravo', 'Household Baker'],
];
r = r.sort(function(a, b) {
return (a[0] > b[0]) ? 1: 0;
// EDIT: I mistakingly copied newer code than the original code I was testing. However the answer was still on point.
// The original code (that worked in Chrome but not Safari or my Rhino environment):
// return a[0] > b[0];
});
console.log(r)
Google Chromeは、node.jsと同様に、並べ替えられた出力を生成します。ただし、Safariはそうではありません(おそらく古いバージョンのFirefoxもそうではありません)。このスクリプトは、Androidアプリ内のRhinoインタープリターによって実行されています
すべてのブラウザーでこれと同じ種類を実現するにはどうすればよいですか(このスクリプトが実行されているプラットフォームで問題が解決すると想定しています)。
渡すコールバックは次を.sort()
返す必要があります。
あなたのコールバックは基本的にSafariのソートメカニズムに悪い答えを与えているので、ソートプロセスは混乱します。具体的には、キーが同じで、2番目のキーが最初のキーよりも小さい場合、コールバックは0を返します。
文字列を比較するために.localeCompare()
、最新のブラウザで使用できます(基本的に私が知っているすべてのブラウザ):
r = r.sort(function(a, b) {
return a[0].localeCompare(b[0]);
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加