我想按第二列對 data1 進行排序。我嘗試了下面的代碼,但似乎排序不正確。如果我嘗試使用一維陣列,結果是正確的。我究竟做錯了什么?
function test(){
var data1 = [['MED1000','ZITHROMAX 15ML'],
['MED01188','AZILEB TABLET 500MG'],
['MED1212','AGOMET-200MG (METRONIDAZOLE) TABLET']
];
data1.sort(function(a, b) {
return a[1] - b[1];
});
Logger.log(data1); // this does not produce right results
// output: [[MED1000, ZITHROMAX 15ML], [MED01188, AZILEB TABLET 500MG], [MED1212, AGOMET-200MG (METRONIDAZOLE) TABLET]]
var data2 = ['ZITHROMAX 15ML','AZILEB TABLET 500MG','AGOMET-200MG (METRONIDAZOLE) TABLET'];
data2.sort();
Logger.log(data2); // this works
// output : [AGOMET-200MG (METRONIDAZOLE) TABLET, AZILEB TABLET 500MG, ZITHROMAX 15ML]
}
uj5u.com熱心網友回復:
參考Array.prototype.sort()
data1.sort(function(a, b) {
return a[1] - b[1]; //This would work if the values are numbers not strings.
});
您需要對字串使用 <,> 運算子
var data1 = [['MED1000','ZITHROMAX 15ML'],
['MED01188','AZILEB TABLET 500MG'],
['MED1212','AGOMET-200MG (METRONIDAZOLE) TABLET']
];
data1.sort((a,b) => (a[1] > b[1]) ? 1 : ((b[1] > a[1]) ? -1 : 0))
console.log(data1)
對于數字,您的方法會起作用
var data1 = [['MED1000','ZITHROMAX 15ML',6],
['MED01188','AZILEB TABLET 500MG',7],
['MED1212','AGOMET-200MG (METRONIDAZOLE) TABLET',3]
];
data1.sort(function(a, b) {
return a[2] - b[2];
});
console.log(data1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/339863.html
