๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. JavaScript์์๋ ๋ฐฐ์ด์ ์ ๋ ฌํ๊ธฐ ์ํ ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ฌ ์ซ์, ๋ฌธ์์ด, ๊ฐ์ฒด ๋ฑ์ ๋ค์ํ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ JavaScript์์ ๋ฐฐ์ด ์ ๋ ฌ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. sort()
: ๊ธฐ๋ณธ ๋ฐฐ์ด ์ ๋ ฌ
sort()
๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ ๋์ฝ๋ ์์์ ๋ฐ๋ผ ์ ๋ ฌํฉ๋๋ค. ์ด๋ก ์ธํด ์ซ์๋ฅผ ์ ๋ ฌํ ๋๋ ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ผ๋ฏ๋ก, ์ซ์ ์ ๋ ฌ ์์๋ ๋น๊ต ํจ์๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ธฐ๋ณธ ์ ๋ ฌ
const fruits = ['banana', 'apple', 'cherry', 'date'];
fruits.sort();
console.log(fruits); // ๊ฒฐ๊ณผ: ['apple', 'banana', 'cherry', 'date']
์ ์์ ์์ sort()
๋ ๋ฌธ์์ด ๋ฐฐ์ด์ ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์์ด๋ก ์ทจ๊ธ๋๋ ๋ฐ์ดํฐ๋ ์ด์ ๊ฐ์ด ์ ์์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
์ซ์ ๋ฐฐ์ด ์ ๋ ฌ
์ซ์ ๋ฐฐ์ด์ sort()
๋ก ์ ๋ ฌํ ๋๋ ๋น๊ต ํจ์๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ซ์๊ฐ ์์๋๋ก ์ ๋ ฌ๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ ๋์ฝ๋ ์์๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์
๋๋ค.
const numbers = [40, 1, 5, 200];
numbers.sort();
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 200, 40, 5] (์๋ชป๋ ์ ๋ ฌ)
์ ์์ ์์๋ ์ซ์๊ฐ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๋์ด ์๋ชป๋ ์ ๋ ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋น๊ต ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ซ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌํ ์ ์์ต๋๋ค.
๋น๊ต ํจ์๋ฅผ ์ฌ์ฉํ ์ซ์ ์ ๋ ฌ
์ซ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌํ๋ ค๋ฉด ๋น๊ต ํจ์๋ฅผ ์ ๋ฌํ์ฌ sort()
๋ฉ์๋๊ฐ ๋ ๊ฐ์ ๋น๊ตํ๋ ๋ฐฉ์์ ์ง์ ํด ์ค๋๋ค.
const numbers = [40, 1, 5, 200];
numbers.sort((a, b) => a - b); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 5, 40, 200]
numbers.sort((a, b) => b - a); // ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
console.log(numbers); // ๊ฒฐ๊ณผ: [200, 40, 5, 1]
์ ์ฝ๋์์ a - b
๋ ์ซ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉฐ, b - a
๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ์ซ์ ๋ฐฐ์ด์ ์ ๋ ฌํ ๋๋ ํญ์ ์ด์ ๊ฐ์ด ๋น๊ต ํจ์๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
2. ๊ฐ์ฒด ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ
๊ฐ์ฒด ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ค๋ฉด ํน์ ์์ฑ(property)์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ๊ฐ์ฒด ๋ฐฐ์ด์ ๋์ด ๋๋ ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ๋ฐฐ์ด์ ์ซ์ ์์ฑ์ผ๋ก ์ ๋ ฌ
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 22 },
{ name: 'Mike', age: 32 }
];
// ๋์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
users.sort((a, b) => a.age - b.age);
console.log(users);
// ๊ฒฐ๊ณผ: [{ name: 'Jane', age: 22 }, { name: 'John', age: 25 }, { name: 'Mike', age: 32 }]
์ ์ฝ๋์์๋ age
์์ฑ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฒด ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ต๋๋ค. ์ด์ฒ๋ผ ๊ฐ์ฒด ๋ฐฐ์ด์ ํน์ ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ์ฌ ์ ๋ ฌํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ๋ฐฐ์ด์ ๋ฌธ์์ด ์์ฑ์ผ๋ก ์ ๋ ฌ
๋ฌธ์์ด ์์ฑ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฒด ๋ฐฐ์ด์ ์ ๋ ฌํ ๋๋ localeCompare()
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ํจ์๋ ๋ฌธ์์ด์ ์ํ๋ฒณ ์์ผ๋ก ๋น๊ตํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 22 },
{ name: 'Mike', age: 32 }
];
// ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ์ํ๋ฒณ ์ ์ ๋ ฌ
users.sort((a, b) => a.name.localeCompare(b.name));
console.log(users);
// ๊ฒฐ๊ณผ: [{ name: 'Jane', age: 22 }, { name: 'John', age: 25 }, { name: 'Mike', age: 32 }]
localeCompare()
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ด ์์ฑ(์ด๋ฆ)์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฒด ๋ฐฐ์ด์ ์ํ๋ฒณ ์์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
3. reverse()
: ๋ฐฐ์ด ์์ ๋ค์ง๊ธฐ
reverse()
๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๋ฅผ ๊ฐ๋จํ๊ฒ ๋ค์ง์ต๋๋ค. ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฐ๋๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค.
const numbers = [1, 2, 3, 4, 5];
numbers.reverse();
console.log(numbers); // ๊ฒฐ๊ณผ: [5, 4, 3, 2, 1]
์ ์์ ์์๋ ๋ฐฐ์ด์ ์์๋ฅผ ๋ค์ง์ด ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ง๋ญ๋๋ค. ์ ๋ ฌ๊ณผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
4. ๋ค์ฐจ์ ๋ฐฐ์ด ์ ๋ ฌ
JavaScript์์๋ ๋ค์ฐจ์ ๋ฐฐ์ด(๋ฐฐ์ด ์์ ๋ฐฐ์ด)์ ์ ๋ ฌํ ์๋ ์์ต๋๋ค. ๋น๊ต ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๋ถ ๋ฐฐ์ด์ ํน์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
const multiArray = [
[1, 'banana'],
[3, 'apple'],
[2, 'cherry']
];
// ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
multiArray.sort((a, b) => a[0] - b[0]);
console.log(multiArray);
// ๊ฒฐ๊ณผ: [[1, 'banana'], [2, 'cherry'], [3, 'apple']]
์ ์์ ์์๋ ๋ค์ฐจ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐฐ์ด์ ์ ๋ ฌํ์ต๋๋ค. ๋ค์ฐจ์ ๋ฐฐ์ด์์๋ ์ํ๋ ๊ธฐ์ค์ ์ค์ ํ์ฌ ์ ๋ ฌํ ์ ์์ต๋๋ค.
5. ์ปค์คํ ์ ๋ ฌ ํจ์ ์์ฑ
์ํฉ์ ๋ฐ๋ผ ๊ธฐ๋ณธ ์ ๋ ฌ ๋ฐฉ๋ฒ ์ธ์ ํน์ ๊ธฐ์ค์ ๋ง์ถ ์ปค์คํ ์ ๋ ฌ์ด ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฌธ์์ด ๋ฐฐ์ด์ ๊ธธ์ด ์์ผ๋ก ์ ๋ ฌํ๊ฑฐ๋, ๋ณต์กํ ์กฐ๊ฑด์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด ๋ฐฐ์ด์ ์ ๋ ฌํ ์ ์์ต๋๋ค.
const words = ['apple', 'banana', 'cherry', 'date'];
// ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ
words.sort((a, b) => a.length - b.length);
console.log(words); // ๊ฒฐ๊ณผ: ['date', 'apple', 'banana', 'cherry']
์ ์์ ์์๋ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ฌธ์์ด ๊ธธ์ด์ ๋ฐ๋ผ ์ ๋ ฌํ์ต๋๋ค. ์ด์ฒ๋ผ ํน์ ์กฐ๊ฑด์ ๋ง์ถ ์ ๋ ฌ์ ์ํด ์ปค์คํ ๋น๊ต ํจ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
JavaScript์์ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๋ค์ํ๋ฉฐ, ์ํฉ์ ๋ง๊ฒ sort()
, reverse()
๋ฑ์ ๋ฉ์๋๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ๋ฌธ์์ด, ์ซ์, ๊ฐ์ฒด ๋ฐฐ์ด์ ๊ธฐ์ค์ ๋ง์ถฐ ์ ๋ ฌํ ์ ์๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ปค์คํ
๋น๊ต ํจ์๋ฅผ ์์ฑํด ๋์ฑ ๋ณต์กํ ์ ๋ ฌ์ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ฐฐ์ด ์ ๋ ฌ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์ค์ํ ๋๊ตฌ์ด๋ฏ๋ก, ์ด๋ฅผ ์ ํ์ฉํด ํ๋ก์ ํธ์์ ํ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ