所以我有這個數組,我需要按字母順序排列第二項(newInv[x][1])
。我試圖製作一個compareFunction
,但沒有奏效。幫幫我!謝謝。.sort()二維數組javascript比較第二項
newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
所以我有這個數組,我需要按字母順序排列第二項(newInv[x][1])
。我試圖製作一個compareFunction
,但沒有奏效。幫幫我!謝謝。.sort()二維數組javascript比較第二項
newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
很難確定你做錯了什麼,並解釋爲什麼,當你沒有包括你的非工作代碼。
但是,我認爲你的問題是在執行比較功能。比較功能需要兩個參數,從陣列中的兩個項目進行排序,並回報:
1
(或任意正整數),如果第一個項目在您的排序順序是:後第二項0
如果它們是「相同的」-1
(或任何負整數),如果第一個項目在您的排序順序是:之前第二項。這裏是一個比較功能,你想要做什麼:
newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
compareFn = function(a, b) {
if (a[1] == b[1]) return 0;
return a[1] > b[1] ? 1 : -1;
};
newInv.sort(compareFn);
alert(newInv);
試試這個;
newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
//classical nested loop for sorting
for(i=0;i<newInv.length;i++)
{
for(j=i+1;j<newInv.length;j++)
{
//alphabetical comparing of second elements
if(newInv[i][1].localeCompare(newInv[j][1])>0)
{
//swapping values
var x=newInv[i];
newInv[i]=newInv[j];
newInv[j]=x;
}
}
}
//display sorted array
console.log(newInv)
您可以結合使用sort()
法localeCompare()
返回排序的數組。
var newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
var result = newInv.sort(function(a, b) {
return a[1].localeCompare(b[1])
})
console.log(result)
爲什麼投反對票?請解釋。 –