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