- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望使用 localeCompare
用于严格排序字符串,但我发现它正在返回 0
当给定两个不同的 unicode 字符时,错误地表明它们是相同的,例如
ℜ U+211C (alt-08476) 黑色大写字母 R = 实部
ℝ U+211D (alt-08477) DOUBLE-STRUCK CAPITAL R = 实数集
"ℜ".localeCompare("ℝ", "en")
> 0
"ℜ" === "ℝ"
> false
"ℜ".charCodeAt(0)
> 8476
"ℝ".charCodeAt(0)
> 8477
我查看了文档,但默认值已经用于“排序”和“变体”,这似乎是最严格的可用:
localeCompare
无法给出严格的命令?
最佳答案
似乎在检测到它们都是大写字母R的非ASCII版本后,String.localeCompare()
正确指定两个字符之间的顺序没有特别的区别。
console.log(
// two non-0x43 uppercase Cs
'ℂ'.localeCompare('𝑪', 'en'),
// two non-0x5A uppercase Zs
"ℤ".localeCompare('𝗭', 'en'),
// 0x5A ASCII Z precedes both:
"Z".localeCompare('ℤ', 'en'),
"Z".localeCompare('𝗭', 'en'),
);
const sort = (a, b) => a.localeCompare(b) || -(a < b);
console.log(
// 1 (C < 𝑪 in localeCompare)
sort('𝑪', 'C'),
// -1 (Canonically equivalent; falls back to 0x2102 < 0xD835)
sort('ℂ', '𝑪')
);
The actual return values are implementation-defined to permitimplementers to encode additional information in the value, but thefunction is required to define a total ordering on all Strings and toreturn 0 when comparing Strings that are considered canonicallyequivalent by the Unicode standard.
Unicode provides two such notions, canonical equivalence andcompatibility. Code point sequences that are defined as canonicallyequivalent are assumed to have the same appearance and meaning whenprinted or displayed.
For example, the code point U+006E (the Latinlowercase n) followed by U+0303 (the combining tilde ◌̃) isdefined by Unicode to be canonically equivalent to the single codepoint U+00F1 (the lowercase letter ñ of the Spanish alphabet).
Therefore, those sequences should be displayed in the same manner,should be treated in the same way by applications such asalphabetizing names or searching, and may be substituted for eachother. Similarly, each Hangul syllable block that is encoded as asingle character may be equivalently encoded as a combination of aleading conjoining jamo, a vowel conjoining jamo, and, if appropriate,a trailing conjoining jamo.
关于javascript - localeCompare 为不同的 unicode 符号返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63024515/
我正在开发一个漫画书阅读器,我有一些用户上传的文件(图像)(文件对象),我正在使用它们的文件名以正确的顺序对它们进行排序。 我尝试使用 localeCompare对它们进行自然排序,但没有运气....
我使用 JS 和 jQuery 对我的表格进行排序,这是我对表格进行排序的代码 function sortTable(table, column, order) { var asc =
这个问题已经有答案了: Why doesn't my arrow function return a value? (1 个回答) 已关闭 3 年前。 我的问题类似于 this ,但不一样。 我正在尝
我正在使用 localCompare 来比较一些字符串,这些字符串是数字。我希望订单是数字。我怎样才能做到这一点? 排序功能: requestAmountEl.find('optgroup').eac
我正在尝试对包含 lastName 和 firstName 属性的对象数组进行排序。我希望对象按 asc 顺序按 lastName 排序,如果对象具有相同的 lastName。 下面是我需要的排序顺序
我现在正在使用 javascript string 使用 localeCompare 进行排序,我的数据也将包含多个 null 值. 在比较 string 和 null 值时,我发现 localeCo
localeCompare() 应该返回(-1、0 或 1),但是,以下代码在我的 PC 浏览器 Chrome 53 上返回“1”(如预期),但在我的手机浏览器上返回“-8” Samsung Inte
在最新的 Firefox 和 Chrome 中测试(在我的系统上有一个“de”语言环境): "Ä".localeCompare("A") 给我 1,这意味着它认为 "Ä" 应该按排序顺序出现在之后 "
我在用捷克名字对数组进行排序时遇到问题。它适用于普通字符,但不适用于特殊字符。 'Sb', 'St', 'Šk' ;特殊的 Š 应该在其他两个词之后,但它以不同的顺序结束。这是一个简单的代码。 var
尝试使用 ES6 arrayObj.sort(a,b) => a.property.localeCompare(b.property)语法但出现错误: TypeError: a.property.lo
我有以下代码: const test = "true"; console.log(test.localeCompare("true", undefined, { sensitivity: 'base'
我一直在尝试在控制台上编写这段代码: 'B'.localeCompare('a') 我一直从中得到“1”,尽管 ascii“a”更大所以我应该得到 -1。 我试图寻找任何一致性,但没有成功。 如果能清
我正在尝试从最低值到最高值对数组进行排序。 下面的示例显示它已按这种方式排序 var array = ["-394","-275","-156","-37","82","201","320","439
我正在使用 React ant design table .在该表中,我尝试使用 localeCompare 对空值进行排序,它显示类型错误。 JSON const data = [{ key:
首先我安装了 nodemailer 然后它显示没有正确配置。之后我将它更新到 nodemailer 0.7.1 然后它显示找不到 mimelib 模块。然后我再次尝试重新安装 nodemailer 然
我尝试按字母顺序对数组数据进行排序,但我认为有些地方不对。 var items; // it's OK items = ['a', 'á']; items.sort((a, b) => a.loca
我正在尝试使用 JavaScript 的 localeCompare字符串排序函数。 我对在 devTools 控制台中运行以下行的结果感到惊讶: "a".localeCompare("b") //
当我对我的数组进行排序时,我在控制台中收到以下错误: Uncaught TypeError: Cannot read property 'localeCompare' of null 到目前为止我尝试
这个问题已经有答案了: 400x Sorting Speedup by Switching a.localeCompare(b) to (ab?1:0)) (5 个回答) 已关闭 4 年前。 我正在按
我正在尝试创建一个比较器,它对于大于、小于和等于返回 true 或 false。我发现 localeCompare 函数比较 2 个字符串并返回 1,0 或 -1。我尝试返回 true 或 false
我是一名优秀的程序员,十分优秀!