私はこのコードを次のようにします。違いの配列をソートすることを期待していましたが、Chromeで検査すると、ソートの前後で差の配列が同じになります。私のコードで何が間違っているのか、そしてソート方法がうまくいかない理由を指摘することで、助けてください。それは配列が(プッシュを使用して)作成される方法と関係しているように見えますが、何が間違っているのかはわかりません。javascriptプッシュメソッドを使用して使用されるオブジェクトの配列をソート
var differences = [];
for (i = 0; i < locations.length; i++) {
var myObj = {
lat : locations[i].lat,
lng : locations[i].lng,
distance : locations[i].lng
};
differences.push(myObj);
}
function compare(a, b) {
if (a.distance < b.distance)
return -1;
if (a.distance > b.distance)
return 1;
return 0;
}
console.log(differences);
differences.sort(compare);
console.log(differences);
おそらく積極的であることとあなたの両方のログで同じオブジェクトを示すChromeの。あなたの最初のログでは、このconsole.log(JSON.stringify(differences))); – tymeJV
また、sortメソッドがUnicodeを使用してソートするとき、ソートは実際には数値に対して使用される安定メソッドではありません。例として、var nums = [2、10]; nums.sort(); 10、2ではなく2、10を出力します。なぜなら、ユニコードでは、10がユニコードポイント順で2より前に来るからです。私は数値にソートを使用することをお勧めします。 – Korgrue
@ Korgrue OPはカスタム比較機能を使用しています。あなたの議論は適用されません。 – AmericanUmlaut