2016-04-28 4 views
1

私は各サブアレイの第2の要素に基づいて配列の配列をソートする関数を書いた。たとえば、次のように並べ替えSafariでこの並べ替え機能が動作しないのはなぜですか?

var x = [['car', 10], ['dog', 20], ['horse', 2]] 

は、私はChromeとFirefoxでこの機能を試してみましたが、それだけで正常に動作[[ 'dog', 20 ], [ 'car', 10 ], [ 'horse', 2 ]]

を返す必要があります。何らかの理由でSafariで試してみると、結果の配列はソートされません。なぜこれが起こっているのですか、それを修正するために何ができますか?ここで

は関数である。

 x = x.sort(function(a,b){ 
    return a[1] < b[1]; 
}) 
+0

ドキュメントを読む:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort –

答えて

1

あなたがゼロ、ゼロまたはゼロより大きくsmaler値を返す必要があります。おそらくhereのドキュメントを参照してください。

この提案は、実際に比較された項目の値の差を返します。 sortordeがdescrendingしている間、aの値をbから減算する必要があります。

function(a, b){ 
    return b[1] - a[1]; 
}); 

例:ところで

var x = [['car', 10], ['dog', 20], ['horse', 2]]; 
 
x.sort(function(a,b){ 
 
    return b[1] - a[1]; 
 
}); 
 
document.write('<pre>' + JSON.stringify(x, 0, 4) + '</pre>');

、結果を代入する必要はありません。並べ替えは動作しています、場所はです。

+0

ありがとう、それは動作します。なぜChrome/Firefoxで動作したのですが、Safariでは動作しませんでしたか? – ninesalt

+0

いいえ、実際に私はサファリが働いていません。 –

関連する問題