ORANGEE

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ์ •๋ ฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๋ณธ๋ฌธ

CODE

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ์ •๋ ฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

ORANGEE 2025. 4. 3. 08:06
## ๐Ÿ” ๊ธฐ๋ณธ ๊ฐœ๋…: `sort()`๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ๋Š” Array.prototype.sort() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ฌธ์ž์—ด ๊ธฐ์ค€์˜ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ˆซ์ž ์ •๋ ฌ์„ ์œ„ํ•ด์„œ๋Š” ๋น„๊ต ํ•จ์ˆ˜(compare function)๋ฅผ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.


โœจ ๊ธฐ๋ณธ ์ •๋ ฌ ์˜ˆ์‹œ

const arr = [10, 5, 3, 8];
arr.sort();
console.log(arr); // [10, 3, 5, 8] - ๋ฌธ์ž์—ด ๊ธฐ์ค€ ์ •๋ ฌ

๊ธฐ๋ณธ sort()๋Š” ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ์œ ๋‹ˆ์ฝ”๋“œ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์ฒ˜๋Ÿผ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌ๋  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ”ง ์ˆซ์ž ์ •๋ ฌ์„ ์œ„ํ•œ compareFunction

const arr = [10, 5, 3, 8];
arr.sort((a, b) => a - b); // ์˜ค๋ฆ„์ฐจ์ˆœ
console.log(arr); // [3, 5, 8, 10]

arr.sort((a, b) => b - a); // ๋‚ด๋ฆผ์ฐจ์ˆœ
console.log(arr); // [10, 8, 5, 3]

๋น„๊ต ํ•จ์ˆ˜์—์„œ:

  • a - b โ†’ ์˜ค๋ฆ„์ฐจ์ˆœ
  • b - a โ†’ ๋‚ด๋ฆผ์ฐจ์ˆœ

๐Ÿ“Œ ๋ฌธ์ž์—ด ์ •๋ ฌ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ X)

const words = ["Banana", "apple", "Cherry"];
words.sort((a, b) => a.localeCompare(b));
console.log(words); // ["apple", "Banana", "Cherry"]

localeCompare()๋Š” ๋ฌธ์ž์—ด์„ ํ˜„์ง€ํ™” ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.


๐Ÿง  ๊ฐ์ฒด ๋ฐฐ์—ด ์ •๋ ฌ

const users = [
  { name: "Tom", age: 32 },
  { name: "Jane", age: 28 },
  { name: "Alex", age: 45 },
];

// ๋‚˜์ด์ˆœ ์ •๋ ฌ
users.sort((a, b) => a.age - b.age);

ํŠน์ • ํ‚ค ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ๋„ ๋น„๊ต ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.


โœ… ์ •๋ฆฌ

  • sort()๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•œ๋‹ค (์ฃผ์˜!)
  • ์ˆซ์ž ์ •๋ ฌ ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ compareFunction ์‚ฌ์šฉ
  • ๋ฌธ์ž์—ด์€ localeCompare()๋กœ ์ •๋ ฌ ์•ˆ์ •์„ฑ ํ™•๋ณด
  • ๊ฐ์ฒด ์ •๋ ฌ๋„ ๋น„๊ต ํ•จ์ˆ˜๋กœ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ