如何使用linq-to-typescript的orderBy函数正确排序整数类型球衣号
解决linq-to-typescript按球衣号排序出现字符串排序的问题
问题原因
虽然你将shirtNumber定义为number类型,但实际数据可能是字符串类型(比如后端返回、赋值时未正确转换),导致linq-to-typescript的orderBy按字符串字典序排序,出现1、10、11、2...的错误顺序。
解决方案
方案1:排序时显式转换为数值
在orderBy的回调中,将shirtNumber强制转换为number类型后再排序:
return from(this.team.players) .orderBy(p => Number(p.shirtNumber)) .toArray();
方案2:确保数据源的类型正确性
在获取或初始化球员数据时,将shirtNumber转换为number类型,从根源解决问题:
// 示例:处理后端返回的原始数据 this.team.players = rawPlayerData.map(player => ({ ...player, shirtNumber: Number(player.shirtNumber) }));
内容的提问来源于stack exchange,提问作者Hugh Jones
相关产品推荐
相关产品推荐

