我有這樣的代碼如下。我預計差異數組需要排序,但是當我使用Chrome進行檢查時,差異數組在排序前後是相同的。請幫助指出我的代碼中出現了什麼問題,以及爲什麼sort方法不起作用。看起來它與數組的創建方式(使用推式)有關,但不知道那裏出了什麼問題。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);
這可能只是鉻積極主動,並顯示你在這兩個日誌相同的對象。在你的第一個日誌中,做這個'console.log(JSON.parse(JSON.stringify(differences)));' – tymeJV
另外,Sort在數字上使用時並不是一個穩定的方法,因爲sort方法使用Unicode進行排序。例如,var nums = [2,10]; nums.sort();會輸出10個,2個而不是2個,因爲在unicode中,10個以unicode點的順序前2個。我會建議不要在數字上使用排序。 – Korgrue
@Korgrue OP使用自定義比較功能。你的論點不適用。 – AmericanUmlaut