Baseline Widely available
ÐеÑод localeCompare()
ÑÑÑоковÑÑ
знаÑений
возвÑаÑÐ°ÐµÑ ÑиÑло, ÑказÑваÑÑее, где должна наÑ
одиÑÑÑÑ ÑÑа ÑÑÑока пÑи ÑоÑÑиÑовке (до, поÑле или в Ñом же Ñамом меÑÑе, ÑÑо и ÑÑÑока, пеÑÐµÐ´Ð°Ð½Ð½Ð°Ñ Ð² каÑеÑÑве паÑамеÑÑа). Ð ÑеализаÑиÑÑ
Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой Intl.Collator
API ÑÑÐ¾Ñ Ð¼ÐµÑод пÑоÑÑо вÑзÑÐ²Ð°ÐµÑ Intl.Collator
.
ÐÑи ÑÑавнении болÑÑого колиÑеÑÑва ÑÑÑок, напÑÐ¸Ð¼ÐµÑ Ð¿Ñи ÑоÑÑиÑовке болÑÑиÑ
маÑÑивов, лÑÑÑе ÑоздаÑÑ Ð¾Ð±ÑÐµÐºÑ Intl.Collator
и иÑполÑзоваÑÑ Ð¿ÑедоÑÑавлÑемÑй им меÑод compare()
.
const a = "réservé"; // With accents, lowercase
const b = "RESERVE"; // No accents, uppercase
console.log(a.localeCompare(b));
// Expected output: 1
console.log(a.localeCompare(b, "en", { sensitivity: "base" }));
// Expected output: 0
СинÑакÑиÑ
localeCompare(compareString)
localeCompare(compareString, locales)
localeCompare(compareString, locales, options)
ÐаÑамеÑÑÑ
ÐаÑамеÑÑÑ locales
и options
ÐаÑамеÑÑÑ locales
и options
изменÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑÑнкÑии и позволÑÑÑ Ð¿ÑиложениÑм опÑеделÑÑÑ ÑзÑк, пÑавила ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾ÑоÑого, ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ.
Ð ÑеализаÑиÑÑ
, поддеÑживаÑÑиÑ
Intl.Collator
API, ÑÑи паÑамеÑÑÑ ÑооÑвеÑÑÑвÑÑÑ Ð¿Ð°ÑамеÑÑам конÑÑÑÑкÑоÑа Intl.Collator()
. РеализаÑии без поддеÑжки Intl.Collator
Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð³Ð½Ð¾ÑиÑоваÑÑ Ð¾Ð±Ð° паÑамеÑÑа, возвÑаÑаемÑй ÑезÑлÑÑÐ°Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð·Ð°Ð²Ð¸ÑÐ¸Ñ Ð¾Ñ ÑеализаÑии.
compareString
СÑÑока, Ñ ÐºÐ¾ÑоÑой ÑÑавниваеÑÑÑ referenceStr
. ÐÑе знаÑÐµÐ½Ð¸Ñ Ð¿ÑиводÑÑÑÑ Ðº ÑÑÑокам, поÑÑÐ¾Ð¼Ñ Ð¾ÑÑÑÑÑÑвие знаÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ знаÑение undefined
пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑомÑ, ÑÑо localeCompare()
бÑÐ´ÐµÑ ÑÑавниваÑÑ Ñо ÑÑÑокой "undefined"
, а ÑÑо ÑкоÑее вÑего не Ñо, ÑÑо Ð²Ñ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑе.
locales
ÐеобÑзаÑелÑнÑй
СÑÑока Ñ ÑзÑковÑм Ñегом BCP 47 или маÑÑив ÑакиÑ
ÑÑÑок. СооÑвеÑÑÑвÑÐµÑ Ð¿Ð°ÑамеÑÑÑ locales
конÑÑÑÑкÑоÑа Intl.Collator()
.
Ð ÑеализаÑиÑÑ
без поддеÑжки Intl.Collator
ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ Ð¸ обÑÑно иÑполÑзÑеÑÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ ÑÑÑÑойÑÑва.
options
ÐеобÑзаÑелÑнÑй
ÐбÑÐµÐºÑ Ð¾Ð¿ÑеделÑÑÑий вÑÑ
одной ÑоÑмаÑ. СооÑвеÑÑÑвÑÐµÑ Ð¿Ð°ÑамеÑÑÑ options
конÑÑÑÑкÑоÑа Intl.Collator()
.
Ð ÑеализаÑиÑÑ
без поддеÑжки Intl.Collator
ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ.
СмоÑÑиÑе опиÑание конÑÑÑÑкÑоÑа Intl.Collator()
Ð´Ð»Ñ Ð¿Ð¾Ð´ÑобноÑÑей иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÑамеÑÑов locales
и options
.
ÐÑÑиÑаÑелÑное ÑиÑло еÑли referenceStr
вÑÑÑеÑаеÑÑÑ Ð¿ÐµÑед compareString
; положиÑелÑное еÑли referenceStr
вÑÑÑеÑаеÑÑÑ Ð¿Ð¾Ñле compareString
; 0
еÑли они одинаковÑ.
Ð ÑеализаÑиÑÑ
Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой Intl.Collator
ÑезÑлÑÑÐ°Ñ ÑквиваленÑен ÑезÑлÑÑаÑÑ Ð²Ñзова new Intl.Collator(locales, options).compare(referenceStr, compareString)
.
ÐозвÑаÑÐ°ÐµÑ ÑиÑло, ÑказÑваÑÑее, ÑаÑположена ли referenceStr
до, поÑле или в Ñом же Ñамом меÑÑе, ÑÑо и compareString
.
referenceStr
вÑÑÑеÑаеÑÑÑ Ð¿ÐµÑед compareString
,referenceStr
вÑÑÑеÑаеÑÑÑ Ð¿Ð¾Ñле compareString
,0
еÑли ÑÑÑоки одинаковÑ.ÐÑедÑпÑеждение: Ðе полагайÑеÑÑ Ð½Ð° ÑоÑнÑе знаÑÐµÐ½Ð¸Ñ -1
и 1
!
ÐÑÑиÑаÑелÑнÑе и положиÑелÑнÑе оÑвеÑÑ Ð¾ÑлиÑаÑÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ Ð±ÑаÑзеÑа (и веÑÑии бÑаÑзеÑа), поÑÐ¾Ð¼Ñ ÑÑо ÑпеÑиÑикаÑÐ¸Ñ ECMAScript опÑеделÑÐµÑ ÑолÑко Ñо, ÑÑо ÑиÑла Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑми и оÑÑиÑаÑелÑнÑми. ÐекоÑоÑÑе бÑаÑзеÑÑ Ð¼Ð¾Ð³ÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ -2
или 2
или дÑÑгие знаÑениÑ.
localeCompare()
// ÐÑква "а" идÑÑ Ð¿ÐµÑед "в", поÑÑÐ¾Ð¼Ñ ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¾ÑÑиÑаÑелÑнÑм
"а".localeCompare("в"); // -2 или -1 (или дÑÑгое оÑÑиÑаÑелÑное ÑиÑло)
// РалÑавиÑном поÑÑдке Ñлово "пеÑвÑй" идÑÑ Ð¿Ð¾Ñле "вÑоÑой", поÑÑÐ¾Ð¼Ñ ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑм
"пеÑвÑй".localeCompare("вÑоÑой"); // 2 или 1 (или дÑÑгое положиÑелÑное ÑиÑло)
// "а" и "а" одинаковÑ, поÑÑÐ¾Ð¼Ñ ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ñавен нÑлÑ
"а".localeCompare("а"); // 0
СоÑÑиÑовка маÑÑива
localeCompare()
даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑегиÑÑÑонезавиÑимой ÑоÑÑиÑовки маÑÑивов.
const items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"];
items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true }));
// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
ÐÑовеÑка поддеÑжки паÑамеÑÑов locales
и options
ÐаÑамеÑÑÑ locales
и options
поддеÑживаÑÑÑÑ ÐµÑÑ Ð½Ðµ вÑеми бÑаÑзеÑами.
ЧÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ Ð¸Ñ
поддеÑÐ¶ÐºÑ ÑеализаÑией, иÑполÑзÑйÑе аÑгÑÐ¼ÐµÐ½Ñ "i"
(ÑÑебование, ÑÑÐ¾Ð±Ñ Ð½ÐµÐ´Ð¾Ð¿ÑÑÑимÑе ÑзÑковÑе меÑки оÑклонÑлиÑÑ) и иÑклÑÑение RangeError
:
function localeCompareSupportsLocales() {
try {
"foo".localeCompare("bar", "i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
ÐÑполÑзование паÑамеÑÑа locales
РезÑлÑÑаÑÑ, пÑедоÑÑавлÑемÑе localeCompare()
, оÑлиÑаÑÑÑÑ Ð² завиÑимоÑÑи Ð¾Ñ ÑзÑка. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑдка ÑоÑÑиÑовки ÑзÑка, иÑполÑзÑемого в полÑзоваÑелÑÑком инÑеÑÑейÑе ваÑего пÑиложениÑ, ÑбедиÑеÑÑ, ÑÑо Ð²Ñ Ñказали ÑÑÐ¾Ñ ÑзÑк (и, возможно, неÑколÑко запаÑнÑÑ
ÑзÑков) иÑполÑзÑÑ Ð¿Ð°ÑамеÑÑ locales
:
console.log("ä".localeCompare("z", "de")); // оÑÑиÑаÑелÑное знаÑение: в немеÑком бÑква ä идÑÑ ÑÑдом Ñ Ð±Ñквой a
console.log("ä".localeCompare("z", "sv")); // положиÑелÑное знаÑение: в ÑведÑком бÑква ä ÑледÑÐµÑ Ð¿Ð¾Ñле бÑÐºÐ²Ñ z
ÐÑполÑзование паÑамеÑÑа options
РезÑлÑÑаÑ, пÑедоÑÑавлÑемÑй localeCompare()
, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑоен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа options
:
// РнемеÑком бÑква a ÑвлÑеÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ Ð´Ð»Ñ Ð±ÑÐºÐ²Ñ Ã¤
console.log("ä".localeCompare("a", "de", { sensitivity: "base" })); // 0
// Ð ÑведÑком бÑÐºÐ²Ñ Ã¤ и a ÑвлÑÑÑÑÑ Ð´Ð²ÑÐ¼Ñ ÑазнÑми базовÑми бÑквами
console.log("ä".localeCompare("a", "sv", { sensitivity: "base" })); // положиÑелÑное знаÑение
СоÑÑиÑовка ÑиÑел
// Ðо ÑмолÑаниÑ, "2" > "10"
console.log("2".localeCompare("10")); // 1
// СоÑÑиÑовка ÑиÑел Ñ Ð¸ÑполÑзованием наÑÑÑоек:
console.log("2".localeCompare("10", undefined, { numeric: true })); // -1
// СоÑÑиÑовка ÑиÑел Ñ Ð¸ÑполÑзованием ÑзÑковÑÑ
меÑок:
console.log("2".localeCompare("10", "en-u-kn-true")); // -1
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
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