๋ฌธ์
for๋ฌธ์ ๋๋ฉด์ ํน์ ๊ฐ์ ๋ฐฐ์ด์ push๋ฅผ ํด์ผํ๋๋ฐ, ์ค๋ณต์ด ๋ฐ์ํ๋ฉด ์ ๋๋ ์ํฉ์ด์๋ค.
๊ทธ๋์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์๊ฐํด๋๋ค.
1. ๋ชจ๋ ๊ฐ์ ๋ฐฐ์ด์ ๋ด์ ํ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ
2. ๊ฐ์ ๋ด์ ๋ ์ค๋ณต์ ๊ฒ์ฌํ๊ธฐ
includes()
์ฐพ์๋ดค๋๋ฐ, includes()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ๋ฆฌ ์ค๋ณต์ ๊ฒ์ฌํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์ด ํด๋น ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ค.
let numbers = [];
[1, 2, 3, 1, 2, 4, 5].forEach(num =>
{ if (!numbers.includes(num)) {
numbers.push(num);
}
});
console.log(numbers); // [1, 2, 3, 4, 5]
includes()๋ ํด๋น ๊ฐ์ด ๋ฐฐ์ด์ ํฌํจ๋์ด ์๋์ง true or false๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
๊ทธ๋์ ์ค๋ณต์ ๋ฐฉ์งํ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ค, ๋ ์์ธํ ์์๋ณด๋ ๋ฐ์ดํฐ ์์ด ๋ง์์ง๋ฉด includes()๋ ์๋๊ฐ ๋๋ ค์ง๋ค๋ ๊ฒ์ ์๊ฒ ๋๋ค.
includes()๋ O(n)์ ์๋์ด๊ธฐ ๋๋ฌธ์, ๋ฐฐ์ด์ ๋ด๊ธด ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ํจ์์๋ค.
๋ด๊ฐ ์ฌ์ฉํ๋ ์ด ๋ถ๋ถ์์๋ ๋ฐ์ดํฐ๊ฐ ๊ทธ๋ ๊ฒ ๋ง์ง ์์ ํธ์ด๋ผ includes๋ก ํด๋ ๊ด์ฐฎ์์ ์ด๋๋ก ์งํํ๋ค. (์ง์ง ๋ง์์ผ ๋ช ๋ฐฑ๊ฐ ์ ๋..?)
ํ์ง๋ง ์ฑ๋ฅ ์ต์ ํ๋ฅผ ๊ณ ๋ฏผํ๋ค ๋ณด๋ ๋ ๋์ ๋ฐฉ๋ฒ์ด ์์๊น ์ฐพ์๋ดค๋ค.
๊ทธ๋ ๋ฐ๊ฒฌํ ๊ฒ์ด ๋ฐ๋ก Set์ด์๋ค.
Set
Set์ ์ค๋ณต ์๋ ๊ฐ๋ค์ ์งํฉ์ ๋ค๋ฃจ๋ ์๋ฃํ์ด๋ค.
์ฃผ์ ํน์ง
1. ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(2); // ์ค๋ณต๋ 2๋ ๋ฌด์๋จ
console.log(mySet); // Set {1, 2}
Set์ ๊ฐ์ ๊ฐ์ ๋ ๋ฒ ์ด์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด, ๋ ๋ฒ์งธ ๊ฐ์ ๋ฌด์๋๋ค.
2. ์์๊ฐ ์๋ค.
const mySet = new Set([1, 2, 3]);
console.log([...mySet]); // [1, 2, 3]
Set์ ์ฝ์ ์์๋ฅผ ๊ธฐ์ตํ๋ฉฐ, ๊ฐ์ ์ฝ์ ํ ์์๋๋ก ๋ฐ๋ณตํ ์ ์์ด. ์ฆ, ์ฝ์ ์์๋๋ก ๊ฐ์ด ์ ์ฅ๋๋ค.
3. ๋ฐฐ์ด๊ณผ ๋น์ทํ์ง๋ง, ๋ฐฐ์ด๊ณผ๋ ๋ค๋ฅธ ์
Set์ ๋ฐฐ์ด์ฒ๋ผ ๋ฐ๋ณต์ด ๊ฐ๋ฅํ์ง๋ง, ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ์ ๊ทผํ ์ ์๋ค.
๋ฐฐ์ด์์ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํ ๋ Set์ ํ์ฉํ ์ ์๋ค.
4. ๋น ๋ฅธ ๊ฒ์ ์ฑ๋ฅ (O(1))
Set์ ๊ฐ์ ์ฐพ๊ฑฐ๋ ์ฝ์ ํ ๋ ๋งค์ฐ ๋น ๋ฅด๋ค. ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ํ์ํ์ง๋ง, Set์ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํด์ ๋น ๋ฅธ ๊ฒ์์ ์ง์ํ๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๋ ์ ๋ฆฌํ๋ค.
let numbers = [1, 2, 3, 1, 2, 4, 5];
let uniqueNumbers = [...new Set(numbers)]; // ์ค๋ณต ์ ๊ฑฐ
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
Set์ ์ฌ์ฉํ๋ฉด O(1)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ ๊ณตํ๋ฏ๋ก, ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋งค์ฐ ๋ฐ์ด๋๋ค.
Set์ ๋ด๋ถ์ ์ผ๋ก ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํด ๋น ๋ฅธ ๊ฒ์์ ์ง์ํ๋ค.
๋ฐฐ์ด๊ณผ Set์ ์ธ์ ์ฌ์ฉํ ๊น?
- ๋ฐฐ์ด์ ์ค๋ณต์ ๊ฒ์ฌํ๊ณ ์ฒ๋ฆฌํด์ผ ํ ๋, ์์ ๋ฐ์ดํฐ์์๋ includes()๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ง๊ด์ ์ด๊ณ ๊ฐ๋จํ๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ง์์ง ๊ฒฝ์ฐ, Set์ ํ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ํจ์ฌ ์ ๋ฆฌํ๋ค.
๋ฐ๋ผ์, ์ฑ๋ฅ์ด ์ค์ํ๋ค๋ฉด Set์, ๊ฐ๋จํ ๊ฒ์ฆ์ด ํ์ํ๋ฉด includes()๋ฅผ ์ฌ์ฉํ๋ฉด ์ข๋ค.
'๐ฟ๐๐๐๐๐๐๐๐๐๐ ๐ป๐๐๐๐๐๐๐ > ๐น๐๐๐๐๐๐๐๐๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ==์ ===์ ์ฐจ์ด | ๋์จํ ๋น๊ต์ ์๊ฒฉํ ๋น๊ต (0) | 2025.03.13 |
---|---|
[JavaScript] ES6 ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋จ์ถ ํ๊ธฐ๋ฒ(Object Property Shorthand) (0) | 2025.03.11 |
[JavaScript] ์ฝ๋ฐฑ(Callback)ํจ์๋ (0) | 2025.03.09 |
[Javascript] Array.prototype.every()๋ every() ํจ์ ์ฌ์ฉ๋ฒ (0) | 2025.03.07 |
[JavaScript] ๋ ๊ฐ์ ๋ฐฐ์ด ํฉ์น๋ ๋ฐฉ๋ฒ (0) | 2025.03.05 |