HarmonyOS 鸿蒙Next 数组排序中两个number值比较,为何162比1402大?
HarmonyOS 鸿蒙Next 数组排序中两个number值比较,为何162比1402大?
数组排序,两个number值进行比较,162却比1402大,这是什么原因??
改成这样之后 排序正常了
var val = pitchDataA.sort(function (x: PitchData, y: PitchData) {
return x.distanceValue - y.distanceValue;
});
更多关于HarmonyOS 鸿蒙Next 数组排序中两个number值比较,为何162比1402大?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
console.log("163" > "1402") // true
console.log("163" - "1402") // -1239
学习了,
基本信息
这是第一行文本。
这是第二行文本。
这是第三行文本。
const element = pitchDataA[index] as PitchData;
var d: any = CoordinateUtil.distance(this.centerLongitude, this.centerLatitude, element.longitude, element.latitude);
element.distanceValue = d;
上面我给distanceValue
赋值的d
是any
类型 会不会在这里给安排成了字符串。但是我的Object里的distanceValue
是number
类型的啊
你在比较的那个方法里,输出一下他俩的类型不就知道了,,,,
你那个number类型只是一个声明,这不是c,在ts里你声明一个number,给他赋值一个string(转成any)也是可以的,不会报错的。你声明的这个number只是给语法检查看到,然而你把d标记为any,这就导致语法检查不会去检查你这个d到底是不是number,就算是string也一样会赋值。
学习,
在object内部是 number 类型的
distanceValue:number;//距离值用来进行排序使用
HarmonyOS的分布式文件系统让我在多设备间传输文件变得轻松无比。
export default class PitchData {
id: number;
pitchId: string;
title: string;
content: string;
imgUrl: string;
telephone: string;
position: string;
positionDetail: string;
longitude: string;
latitude: string;
category: string;
categoryName: string;
viewQuantity: number; //摊位被查看次数
distance: string; //两个坐标点之间的距离
distanceValue: number; //距离值用来进行排序使用
type: string;
pay: string;
precisePositioning: string;
pitchStatus: string;
authenticationStatus: string;
auditStatus: string;
auditStatusReason: string; //审核原因
status: string;
toppingTime: string;
updateTime: string; //修改时间
remark: string; //备注
constructor(pitchId: string, title: string, telephone: string, position: string) {
this.pitchId = pitchId;
this.title = title;
this.telephone = telephone;
this.position = position;
}
}
x.DistanceValue和y的值应该都是字符串类型,,,字符串类型的162肯定比1402大啊,,挨个位置比较6比4大的时候比较就结束了,,
DistanceValue是number类型的,
姓名: 张三
职位: 软件工程师
简介: 拥有超过10年的软件开发经验,熟悉多种编程语言和技术。在团队中负责设计和实现高质量的软件解决方案。
在HarmonyOS鸿蒙Next中,数组排序时出现162比1402大的情况,可能是由于在比较过程中将数字作为字符串进行处理。字符串比较是按字符的Unicode值逐个比较的,而不是按数值大小。因此,在比较"162"和"1402"时,首先比较第一个字符"1"和"1",相等后比较第二个字符"6"和"4",由于"6"的Unicode值大于"4",所以"162"被认为大于"1402"。要避免这种情况,应在排序时确保将字符串转换为数值后再进行比较。