HarmonyOS intl.Collator数字排序错误

intl.Collator对数字进行排序时,当遇到负数,排序结果错误,示例代码如下

const collator = new intl.Collator('zh-CN', { numeric: true })  //对数字进行排序
const result1 = collator.compare('-0.04', '-1')   // result1 = -1
const result2 = collator.compare('-1', '-0.05')  // result2 = 1
  • 1.
  • 2.
  • 3.

如上示例:result1实际打印结果为-1,result2结果为1,

期望结果:result1为1,result2为-1

HarmonyOS
2024-12-27 16:11:38
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

接口标准如此,不计算负号,例如输入-2,-1,实际比较的是2和1。

collator.compare是针对字符串的比较,如果设置了数值比较,负号是个字符串不会识别到,比如说电话号码的比较,

const result1 = collator.compare('132-1111-2222', '132-2222-3333') // 返回: -1
const result2 = collator.compare('132-3333-2222', '132-2222-3333') // 返回: 1
  • 1.
  • 2.

其中负号是不参与数值的比较,建议直接使用sort方法进行排序处理。例如:

const numbers:number[] = [4,5,9,-1,-2,1,8]
numbers.sort((a,b)=> a-b);
console.log(numbers.toString())
  • 1.
  • 2.
  • 3.
分享
微博
QQ
微信
回复
2024-12-27 19:12:03


相关问题
mysql 中对于中文+数字排序
4137浏览 • 1回复 待解决
HarmonyOS Array.sort排序错误
427浏览 • 1回复 待解决
mysql order对数字型字符串排序
2696浏览 • 1回复 待解决
DataAbilityHelper怎么排序?
4476浏览 • 1回复 待解决
HarmonyOS List拖动排序示例
678浏览 • 1回复 待解决
HarmonyOS Grid组件拖拽排序
717浏览 • 1回复 待解决
HarmonyOS GridRow 实现拖拽排序
355浏览 • 1回复 待解决
HarmonyOS 对象内数组排序问题
548浏览 • 1回复 待解决
HarmonyOS 数组中对象的排序
683浏览 • 1回复 待解决
拖动实现列表重新排序
1626浏览 • 1回复 待解决
HarmonyOS Grid拖动排序和长按冲突
1129浏览 • 2回复 待解决
HarmonyOS 将json对象按照 ASCII 排序
1035浏览 • 1回复 待解决
HarmonyOS 如何实现Listitem的拖拽排序
667浏览 • 1回复 待解决
HarmonyOS 关于Grid组件拖拽排序的问题
1085浏览 • 1回复 待解决
mongodb实现特定值排序查询
2630浏览 • 1回复 待解决
mysql 分组去重排序问题?
2243浏览 • 1回复 待解决
HarmonyOS List组件如何实现拖动重排序
538浏览 • 1回复 待解决
HarmonyOS 数字自定义键盘如何实现
891浏览 • 1回复 待解决
HarmonyOS textInput显示数字键盘
329浏览 • 1回复 待解决
HarmonyOS 应用通知角标数字的查询
371浏览 • 1回复 待解决
HarmonyOS 如何对两个对象进行排序
539浏览 • 1回复 待解决