Baseline Widely available
СводкаÐеÑод normalize()
возвÑаÑÐ°ÐµÑ ÑоÑÐ¼Ñ Ð½Ð¾ÑмализаÑии Юникода данной ÑÑÑоки (еÑли знаÑение не ÑвлÑеÑÑÑ ÑÑÑокой, ÑнаÑала оно бÑÐ´ÐµÑ Ð² Ð½ÐµÑ Ð¿ÑеобÑазовано).
Ðдна из оÑобенноÑÑей Юникода - возможноÑÑÑ ÑÑиÑаÑÑ Ð´Ð²Ð° ÑазнÑÑ Ñимвола ÑквиваленÑнÑми пÑи вÑполнении ÑоÑÑиÑовки и инÑÑ Ð¾Ð¿ÐµÑаÑий, коÑоÑÑе оÑÐ½Ð¾Ð²Ð°Ð½Ñ Ð½Ð° ÑÑавнении.
ÐÐ¸Ð´Ñ ÑквиваленÑноÑÑи: - пеÑвÑй - канониÑеÑÐºÐ°Ñ ÑквиваленÑноÑÑÑ, когда две поÑледоваÑелÑноÑÑи code point ÑвлÑÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð·Ð°Ð¼ÐµÐ½ÑемÑми.
- вÑоÑой - ÑовмеÑÑимоÑÑÑ - две ÑовмеÑÑимÑе поÑледоваÑелÑноÑÑи code point вÑглÑдÑÑ Ð¿Ð¾-ÑазномÑ, но в некоÑоÑÑÑ ÑлÑÑаÑÑ Ð¾Ð½Ð¸ могÑÑ Ð±ÑÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð·Ð°Ð¼ÐµÐ½ÑемÑми.
'æ' взаимозаменÑемÑй 'ae', но они не ÑвлÑÑÑÑÑ ÑÑÑого ÑквиваленÑнÑми, еÑли не пÑовеÑÑи некоÑоÑÑÑ Ð½Ð¾ÑмализаÑиÑ
СинÑакÑÐ¸Ñ ÐаÑамеÑÑÑform
Ðдно из знаÑений "NFC"
, "NFD"
, "NFKC"
или "NFKD"
, опÑеделÑÑÑиÑ
ÑоÑÐ¼Ñ Ð½Ð¾ÑмализаÑии Юникода. ÐÑли паÑамеÑÑ Ð¾Ð¿ÑÑен или Ñавен undefined
, бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð·Ð½Ð°Ñение "NFC"
.
NFC
â ÑоÑма ноÑмализаÑии канониÑеÑкой композиÑией (Normalization Form Canonical Composition, 'NFC'), по ÑмолÑаниÑ;NFD
â ÑоÑма ноÑмализаÑии канониÑеÑкой декомпозиÑией (Normalization Form Canonical Decomposition, 'NFD');NFKC
â ÑоÑма ноÑмализаÑии ÑовмеÑÑимой композиÑией (Normalization Form Compatibility Composition, 'NFKC');NFKD
â ÑоÑма ноÑмализаÑии ÑовмеÑÑимой декомпозиÑией (Normalization Form Compatibility Decomposition, 'NFKD').RangeError
ÐÑли паÑамеÑÑ form
не ÑвлÑеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из вÑÑепеÑеÑиÑленнÑÑ
знаÑений, бÑÐ´ÐµÑ Ð²ÑбÑоÑено иÑклÑÑение RangeError
.
ÐеÑод normalize()
возвÑаÑÐ°ÐµÑ ÑказаннÑÑ ÑоÑÐ¼Ñ Ð½Ð¾ÑмализаÑии Юникода ÑÑÑоки. Ðн не изменÑÐµÑ Ð·Ð½Ð°Ñение Ñамой ÑÑÑоки.
normalize()
let valueStr = ["h", "ĥ", "æ", "ae", "g", "ġ"],
normArr = valueStr.map(function (text) {
return text.normalize(); // (по ÑмолÑÐ°Ð½Ð¸Ñ 'NFC') normArr (поÑле ÑоÑÑиÑовки) -> [ae, g, h, æ, Ä¡, Ä¥]
//return text.normalize('NFD'); // normArr (поÑле ÑоÑÑиÑовки) -> [ae, g, gÌ, h, hÌ, æ]
//return text.normalize('NFKC'); // normArr (поÑле ÑоÑÑиÑовки) -> [ae, g, h, æ, Ä¡, Ä¥]
//return text.normalize('NFKD'); // normArr (поÑле ÑоÑÑиÑовки) -> [ae, g, gÌ, h, hÌ, æ]
});
//ÐоÑле пÑиведение ÑÑÑок в ноÑмалÑнÑÑ ÑоÑмÑ, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пÑовеÑÑи ÑоÑÑиÑовкÑ, маÑÑива:
normArr.sort(function (f, s) {
if (f < s) {
return -1;
} else if (f === s) {
return 0;
} else {
return 1;
}
});
//ÐÑиведение к ноÑмалÑной ÑоÑме можно вÑполниÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ ÑоÑÑиÑовки. ÐоÑмализаÑÐ¸Ñ Ð¿Ñи ÑÑом можно вÑполнÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑазнÑÑ
ÑоÑм ноÑмализаÑии
let valueStrNorm = ["h", "s", "Ä¥", "æ", "È", "ae", "g", "Ä¡"];
valueStrNorm.sort(function (first, second) {
let fN = first.normalize(),
sN = second.normalize("NFKC");
if (fN < sN) {
return -1;
} else if (fN === sN) {
return 0;
} else {
return 1;
}
});
valueStrNorm.join(", "); //-> ae, g, h, s, æ, Ä¡, Ä¥, È
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4