我希望能够按照包含Unicode字符的字符串字段对对象进行排序。但是,我想按照代码点而不是按照区域设置来排序字符串。因此,这里有一个示例,JavaScript将对象排序,以使 \u24B7
和 b
被视为相同的字符。
排序顺序不正确:
> [{name: 'a'}, {name: 'b'}, {name: 'd'}, {name: '\u24B7'}].sort((a,b)=> a.name.localeCompare(b.name))
[ { name: 'a' }, { name: 'b' }, { name: 'Ⓑ' }, { name: 'd' } ]
然而,这不是我想要的。我希望有以下排序顺序,其中它们被视为不同的字符。当比较字符串并且不包括比较函数时,这是默认行为。
正确的排序顺序(请注意,b
和\u24B7
不再被视为相同的排序字符):
> ['a','b','\u24B7','d'].sort()
[ 'a', 'b', 'd', 'Ⓑ' ]
在实际应用中,字符串将会包含多个字符并且可能含有多个Unicode字符,我们希望按照Unicode编号(即代码点)对它们进行排序。
我的问题是:有没有一种简单的方法可以按照代码点对字符串进行排序?我不想重新实现一个自定义比较器。