string.localeCompare
localeCompare()
๋ฉ์๋๋ ์ฐธ์กฐ ๋ฌธ์์ด๊ณผ ๋น๊ต ํ์ ๋ ์ ๋ ฌ๋ ์์๊ฐ ์ธ์๋ก ์ฃผ์ด์ง ๋ฌธ์์ด๋ณด๋ค ์ ์์ค๋์ง ํ์ ์ค๋์ง ํน์ ๊ฐ์ ์์์ ๋ฐฐ์น๋๋์ง๋ฅผ ์๋ ค์ฃผ๋ ์ซ์๋ฅผ ๋ฆฌํดํ๋ค.
const a = 'cat'; // ์๋ฌธ์
const b = 'Cat'; // ๋๋ฌธ์
a.localeCompare(b); // -1
a.localeCompare(b, 'en', {sensitivity: 'base'}); // 0
์ locales
์ option
์ธ์๋ฅผ ํตํด ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๋ ฌ ์์์์ ์ฌ์ฉ๋๋ ์ธ์ด๋ฅผ ์ง์ , ํจ์์ ๋์์ ์ฌ์ฉ์ ์ ์ ํ ์ ์๋ค. ์ด์ locales
์ option
์ธ์๋ ๋ฌด์๋๋ค. locale๊ณผ ์ ๋ ฌ์์๋ ๊ตฌํ์ ์์กดํ๊ณ ์๋ค.
Syntax
referenceStr.localeCompare(compareString[, locales, [, options]])
Parameters
compareString
์ฐธ์กฐํ๋ ๋ฌธ์์ด๊ณผ ๋น๊ตํ๋ ๋ฌธ์์ด
locales ๊ณผ options
ํจ์์ ๋์์ ์ปค์คํ
ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํด์ผ ํ๋ ์ธ์ด๋ฅผ ์ง์ , ์ด์ locales
์ option
์ธ์๋ ๋ฌด์๋๋ค. locale๊ณผ ์ ๋ ฌ์์๋ ๊ตฌํ์ ์์กดํ๊ณ ์๋ค.
์ธ์๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง Intl.Collator()
constructor ์์ ์์ธํ ์ ์ ์๋ค.
Return value
์์๋ referenceStr์ด compareString๋ณด๋ค ์์ ๋ฐฐ์น๋๋ ๊ฒฝ์ฐ,
์์๋ compareString ๋ค์์ ๋ฐฐ์น๋๋ ๊ฒฝ์ฐ
0์ ๋๋ฑํ๋ค.
Description
-1 ๋๋ 1์ ๋ฐํ๊ฐ์ ์์กดํ์ง ์๋๋ค!
W3C spec์์ ์์์ ์์๋ง ์๊ตฌํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๋ ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค์ํ๊ณ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋ -2 ๋๋ 2๋ฅผ ๋ฐํํ๋ฉฐ ์ฌ์ง์ด ๋ค๋ฅธ ์์์ ์์๋ฅผ ๋ฐํํ ์ ์๋ค.
Examples
localeCompare() ์ฌ์ฉํ๊ธฐ
'a'.localeCompare('c'); // -2 or -1 ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅด๋ค
'check'.localeCompare('against'); // 2 or 1 ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅด๋ค.
'a'.localeCompare('a'); // 0
๋ฐฐ์ด ์ ๋ ฌ
localeCompare()
๋ ๋ฐฐ์ด์ ๋์๋ฌธ์ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
let 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รฉ"]
extended argument์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์ ํ์ธํ๊ธฐ
locales์ options ๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ์ง ์๋๋ค.
i
argument๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํ ์ ์๋ค. ์๋ชป๋ ์ธ์๊ฐ ๊ฑฐ๋ถ๋์ด์ผ ํ๋ค. RangeError
๊ฐ ์์ธ๊ฐ ๋๋์ง ๋ณธ๋ค.
function localeCompareSupportsLocales() {
try {
'foo'.localeCompare('bar', 'i');
} catch (e) {
return e.name === 'RangeError';
}
return false;
}
// chrome์์ ์คํํ์ ๋๋ true ๐ง
locales ์ฌ์ฉ
localeCompare()
๋ ๊ฒฐ๊ณผ๋ ์ ๊ณต๋๋ ์ธ์ด๋ง๋ค ๋ค๋ฅด๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์์ ์ฌ์ฉ๋๋ ์ธ์ด์ ์ ๋ ฌ ์์๋ฅผ ์ป์ผ๋ ค๋ฉด locales
์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ธ์ด๋ฅผ ์ง์ ํด์ผํ๋ค.
'รค'.localeCompare('z', 'de'); // ์์ ๋
์ผ์ด๋ z ๋ค์ รค๊ฐ ์จ๋ค.
'รค'.localeCompare('z', 'sv'); // ์์ ์ค์จ๋ด์ด๋ z ์์ รค๊ฐ ์จ๋ค.
options ์ฌ์ฉ
localeCompare()์์ ์ ๊ณต๋ฐ์ ๊ฒฐ๊ณผ๋ options
๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ค.
// ๋
์ผ์ด์์ รค๋ a๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค.
'รค'.localeCompare('a', 'de', { sensitivity: 'base' }); // 0
// ์ค์จ๋ด์ด์์๋ รค๋ a์ ๋ณ๊ฐ์ด๋ค.
'รค'.localeCompare('a', 'sv', { sensitivity: 'base' }); // ์์
์ ์ ๋ ฌ
// ๊ธฐ๋ณธ ๊ฐ, "2" > "10" ์์๋ฆฌ๋ก ๊ณ์ฐํด์ ?
"2".localeCompare("10"); // 1
// options ์ฌ์ฉํ ์ ์ ๋ ฌ
"2".localeCompare("10", undefined, {numeric: true}); // -1
// loales tag๋ฅผ ์ฌ์ฉํ ์ ์ ๋ ฌ
"2".localeCompare("10", "en-u-kn-true"); // -1
Performance
ํฐ ๋ฐฐ์ด ์ ๋ ฌ๊ณผ ๊ฐ์ด ๋ง์ ์๋ก๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋๋ Intl.Collator
๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ Intl.Collator
์์ ์ ๊ณตํ๋ compare
ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
Browser compatibility
locales
์ options
๋ ์๋๋ก์ด๋ ์น๋ทฐ, ์๋๋ก์ด๋ firefox์ ์๋๋ก์ด๋ opera์์ ์ง์๋์ง ์์
Last updated
Was this helpful?