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

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

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

HarmonyOS
7天前
浏览
收藏 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

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

const numbers:number[] = [4,5,9,-1,-2,1,8]
numbers.sort((a,b)=> a-b);
console.log(numbers.toString())
分享
微博
QQ
微信
回复
7天前
相关问题
mysql 中对于中文+数字排序
3652浏览 • 1回复 待解决
mysql order对数字型字符串排序
2223浏览 • 1回复 待解决
DataAbilityHelper怎么排序?
4054浏览 • 1回复 待解决
HarmonyOS List拖动排序示例
147浏览 • 1回复 待解决
HarmonyOS Grid组件拖拽排序
129浏览 • 1回复 待解决
HarmonyOS 对象内数组排序问题
71浏览 • 1回复 待解决
HarmonyOS 数组中对象的排序
79浏览 • 1回复 待解决
HarmonyOS Grid拖动排序和长按冲突
609浏览 • 2回复 待解决
拖动实现列表重新排序
1116浏览 • 1回复 待解决
HarmonyOS 如何实现Listitem的拖拽排序
119浏览 • 1回复 待解决
HarmonyOS 将json对象按照 ASCII 排序
584浏览 • 1回复 待解决
HarmonyOS 关于Grid组件拖拽排序的问题
562浏览 • 1回复 待解决
mongodb实现特定值排序查询
2194浏览 • 1回复 待解决
mysql 分组去重排序问题?
1848浏览 • 1回复 待解决
HarmonyOS 如何对两个对象进行排序
68浏览 • 1回复 待解决
MySQL 如何按照地理位置排序?
2810浏览 • 1回复 待解决
Mysql表的数据如何打乱排序
2301浏览 • 1回复 待解决
HarmonyOS 数字自定义键盘如何实现
475浏览 • 1回复 待解决