1
排序號碼我有一個角2服務apptService
返回Observable<Appointment[]>
我然後爲了使用lodash sortBy
功能:使用Lodash和打字稿
class Appointment {
id: string;
distance: number;
appointmentDate: date;
}
getAppointments(sortOrder) {
this.appointments = this
.apptService
.getAppointments()
.map(v => _.sortBy(v, sortOrder));
}
我請getAppointments
傳遞一個排序函數,如下所示:
getAppointments((app: Appointment) => app.id);
getAppointments((app: Appointment) => app.distance);
getAppointments((app: Appointment) => app.appointmentDate);
appointmentDate
和id
種類與預期的一樣,但按distance
排序時,這些值按字母順序排列即:12,123,15,3
現在,我已經bodged用難看的解決方案:
getAppointments((app: Appointment) => {
// this will only work for appointments up to 100000 miles away
var s = "00000" + app.distance.toString();
return s.substr(s.length - 5);
});
但這打破我的模式,所以我要尋找一個更好的解決方案,或者至少希望瞭解爲什麼會發生這種情況。
lodash被用於排序,因爲我喜歡在排序箭頭函數中傳遞的語法和易用性,但是如果有更好的解決方案,我不會使用它。
對不起,但沒有笨拙,我無法得到lodash和打字稿一起工作。
這可能是您的實例仍然是一個字符串,即沒有從http響應json映射到正確類型,請嘗試: getAppointments((app:Appointment)=> parseInt(app.distance)); – Meir
請與我們分享您的預約之一。我懷疑這個距離是一個字符串。您可以嘗試通過在語句中添加+來解析值:'getAppointments((app:Appointment)=> + app.appointmentDate);' – Polochon
@meir typescript不允許'parseInt(app.distance)'作爲' parseInt'僅適用於字符串。我可以'parseInt(app.distance.toString())'但我想我會回到我開始的地方。 – paul