Language/Java Script

[JavaScript] Set : ์ค‘๋ณต ์ œ๊ฑฐ์™€ ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

soyeon26 2024. 10. 18. 21:10

 

 

Reference

๐Ÿ‘‰๐Ÿป DaleSeo ๋ธ”๋กœ๊ทธ

๐Ÿ‘‰๐Ÿป ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋”ฅ๋‹ค์ด๋ธŒ ๋„์„œ

 

 

 

Set ๊ฐ์ฒด๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ˆ์š”. Set์„ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์œ ์ผํ•œ ๊ฐ’๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ฐจ์ด๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Set์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ES6๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋ผ Set์„ ์“ฐ๋ฉด ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—๋„ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด์š”.

 

๋ฐฐ์—ด๊ณผ Set์˜ ์ฐจ์ด๋ฅผ ์‚ดํŽด๋ณด์ž๋ฉด,

 

๋ฐฐ์—ด์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ์žˆ๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค(index)๋ฅผ ํ†ตํ•ด์„œ ํŠน์ • ์œ„์น˜์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์š”. ๊ฐ’์ด ๋™์ผํ•˜๋”๋ผ๋„ ์ธ๋ฑ์Šค๊ฐ€ ํ‹€๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ๋ฌธ์ œ๋˜์ง€ ์•Š์•„ ๋™์ผํ•œ ๊ฐ’์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  

 

์„ธํŠธ๋Š” ์–ผํ• ๋ณด๊ธฐ์—๋Š” ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•ด๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์‹ค ๊ฒฐ์ด ์•„์ฃผ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์šฐ์„  ์„ธํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ์—†์ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•  ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์„ธํŠธ๋Š” ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ์กด์— ์„ธํŠธ์— ์žˆ๋Š” ๊ฐ’์„ ๋˜ ์ถ”๊ฐ€ํ•˜๋ฉด ์•„๋ฌด ํšจ๋ ฅ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

Set์€ ํ•œ๋งˆ๋””๋กœ ์ˆœ์„œ๊ฐ€ ์—†๋Š”, ์ค‘๋ณต๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

 

๊ตฌ๋ถ„ ๋ฐฐ์—ด Set ๊ฐ์ฒด
๋™์ผํ•œ ๊ฐ’์„ ์ค‘๋ณตํ•˜์—ฌ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค O X
์š”์†Œ ์ˆœ์„œ์— ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค O X
์ธ๋ฑ์Šค๋กœ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค O X

 

 

์ด๋Ÿฌํ•œ Set์˜ ํŠน์„ฑ์€ ์ˆ˜ํ•™์  ์ง‘ํ•ฉ์˜ ํŠน์„ฑ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. Set์€ ์ˆ˜ํ•™์  ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ์„œ Set์„ ํ†ตํ•ด ๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ, ์—ฌ์ง‘ํ•ฉ ๋“ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

Set ๊ฐ์ฒด์˜ ์ƒ์„ฑ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ Set๋Š” ํด๋ž˜์Šค(class)์ด๋ฏ€๋กœ new ํ‚ค์›Œ๋“œ์™€ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

const set = new Set(); // Set(0) {size: 0}

 

์œ„์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž์˜ ์ธ์ž๋กœ ์•„๋ฌด ๊ฒƒ๋„ ๋„˜๊ธฐ์ง€ ์•Š์œผ๋ฉด ๋นˆ ์„ธํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐฐ์—ด์„ ์ธ์ˆ˜๋กœ ๋„˜๊ธฐ๋ฉด ๋ฐฐ์—ด์— ๋‹ด๊ธด ๊ฐ’์œผ๋กœ ์„ธํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

 

 

const numSet = new Set([1, 2, 3]); // Set(3) {1, 2, 3}

 

์ด ๋•Œ, ๋ฐฐ์—ด์— ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ์ค‘๋ณต๋œ ๊ฐ’์€ Set ๊ฐ์ฒด์— ์š”์†Œ๋กœ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์„ฑ์„ ํ™œ์šฉํ•ด ๋ฐฐ์—ด์—์„œ ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

// ๊ธฐ์กด ๋ฐฐ์—ด์—์„œ filter๋กœ ๋ฐฐ์—ด์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•
const uniq = (array) => array.filter( (v, i, self) => self.indexOf(v) === i);
console.log(uniq([1, 1, 1, 1, 2, 2, 3]));

// Set์œผ๋กœ ๋ฐฐ์—ด์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•
const uniq = (array) => [...new Set(array)];
console.log(uniq([1, 1, 1, 1, 2, 2, 3]));

 

 

Set ๊ฐ์ฒด์˜ ์š”์†Œ ๊ฐœ์ˆ˜ ํ™•์ธ

const set = new Set([1, 2, 3, 5]);
console.log(set.size); // 4

 

์„ธํŠธ์˜ size ์†์„ฑ์„ ํ†ตํ•ด์„œ ํ•ด๋‹น ์„ธํŠธ์˜ ๊ธธ์ด, ์ฆ‰ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ’ ์ถ”๊ฐ€

set.add(1); // Set(1) {1}
set.add("A"); // Set(2) {1, 'A'}
set.add(true); // Set(3) {1, 'A', true}

 

์„ธํŠธ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” add() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์š”. ์œ„์—์„œ ์„ค๋ช…๋“œ๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ์„ธํŠธ์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์ถ”๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉฐ, ์œ ์ผํ•œ ๊ฐ’๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ add() ๋ฉ”์„œ๋“œ๋Š” ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ ํ›„์— ์„ธํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฐ์‡„์ ์œผ๋กœ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

set.add(1).add("A").add(true); // Set(3) {1, 'A', true}

 

๊ฐ’ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ

if (set.has("A")) {
  console.log("A๋Š” ์„ธํŠธ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค."); // A๋Š” ์„ธํŠธ์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
}

const result = set.has("B") ? "YES" : "NO"; // NO

 

์„ธํŠธ์— ํŠน์ • ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด has() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต if ์กฐ๊ฑด๋ฌธ์ด๋‚˜ 3ํ•ญ ์—ฐ์‚ฐ์ž(ternary operator)์™€ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

๊ฐ’ ์‚ญ์ œ

set.delete(1); // true
set.delete(2); // false

 

Set์˜ delete() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ธํŠธ๋กœ ๋ถ€ํ„ฐ ํŠน์ • ๊ฐ’์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. delete()๋ฉ”์„œ๋“œ์— ์ธ์ž๋กœ ๋„˜๊ธฐ๋Š” ๊ฐ’์ด ์„ธํŠธ์— ์กด์žฌํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œํ•˜์˜€๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ•ด๋‹น ๊ฐ’์ด ์„ธํŠธ์— ์กด์žฌํ•˜์ง€ ์•Š์•„์„œ ์‚ญ์ œ์— ์‹คํŒจํ•˜์˜€๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ’ ์ผ๊ด„ ์‚ญ์ œ

set.clear(); // Set(0) {size: 0}

Set ๊ฐ์ฒด์˜ ๋ชจ๋“  ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด clear() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

Set ๊ฐ์ฒด ์ˆœํšŒํ•˜๊ธฐ

Set ๊ฐ์ฒด์˜ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ ค๋ฉด forEach ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ forEach์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ณผ forEach ๋ฉ”์„œ๋“œ์˜ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ this๋กœ ์‚ฌ์šฉ๋  ๊ฐ์ฒด๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด์š”. ์ด ๋•Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” 3๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.

set.forEach(("ํ˜„์žฌ ์ˆœํšŒ์ค‘์ธ ์š”์†Œ ๊ฐ’", "ํ˜„์žฌ ์ˆœํšŒ์ค‘์ธ ์š”์†Œ ๊ฐ’", "ํ˜„์žฌ ์ˆœํšŒ์ค‘์ธ Set ๊ฐ์ฒด ์ž์ฒด") => {})

 

์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์™€ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” ๊ฐ™์€ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ด์œ ๋Š” ๋ฐฐ์—ด์˜ forEach ๋ฉ”์„œ๋“œ์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ต์ผํ•˜๊ธฐ ์œ„ํ•จ์ด๋ฉฐ ๋‹ค๋ฅธ์˜๋ฏธ๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์€ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜์— ํ˜„์žฌ ์ˆœํšŒ์ค‘์ธ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ „๋‹ฌ๋ฐ›์ง€๋งŒ Set์€ ์ˆœ์„œ์— ์˜๋ฏธ๊ฐ€ ์—†์–ด ์ธ๋ฑ์Šค๋ฅผ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

const set = new Set([1, 2, 3, 5]);

set.forEach((v, v2, set) => console.log(v, v2, set));

 

 

Set ๊ฐ์ฒด๋Š” ๋ฐ˜๋ณต์ด ๊ฐ€๋Šฅํ•œ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— for...of๋ฌธ์œผ๋กœ ์ˆœํšŒ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•๊ณผ ๋ฐฐ์—ด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง์˜ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ๋„ ์žˆ์–ด์š”.

 

const set = new Set();

set.add({name: "๋‚˜๋ฌด", age: 2});
set.add({name: "ํ•ดํ”ผ", age: 5});
set.add({name: "๋ง๊ณ ", age: 10});

for(const value of set){
    console.log('์ด๋ฆ„', value.name);
    console.log('๋‚˜์ด', value.age);
}

 

๋ฐฐ์—ด์„ ์„ธํŠธ๋กœ ๋ณ€ํ™˜

์‹ค์ œ๋กœ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ๋ฐฐ์—ด๋กœ ๋ถ€ํ„ฐ ์ƒˆ๋กœ์šด ์„ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋Š” Set() ์ƒ์„ฑ์ž์˜ ์ธ์ž๋กœ ํ•ด๋‹น ๋ฐฐ์—ด์ด ํ• ๋‹น๋œ ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฃผ์˜ ํ•ด์•ผ ํ•  ์ ์€ ๋ฐฐ์—ด๋กœ ๋ถ€ํ„ฐ ์„ธํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋ฉด ์ค‘๋ณต ๊ฐ’์ด ๋ชจ๋‘ ์ œ๊ฑฐ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ค‘๋ณต ๊ฐ’์„ ์œ ์ง€ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ๋ฐฐ์—ด์„ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ฐํ•ด๋ด์š”!

const array = [1, 2, 2, 3, 3, 3];
const set = new Set(array); // Set(3) {1, 2, 3}
 

Set ๊ฐ์ฒด๋Š” ์ค‘๋ณต๋œ ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๊ฐ’์ด์–ด๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค. Set์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ค‘๋ณต์„ ํŒ๋‹จํ•  ๋•Œ, ์›์‹œ๊ฐ’(์ˆซ์ž, ๋ฌธ์ž์—ด ๋“ฑ)์€ ๊ฐ’ ์ž์ฒด๋ฅผ ๋น„๊ตํ•˜์ง€๋งŒ, ๊ฐ์ฒด๋Š” ์ฐธ์กฐ(๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜)๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ๋‚ด์šฉ์ด๋ผ๋„ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด ๋ฐฐ์—ด์—์„œ:

const arr = [
    { nickName: "Jerry", date: '03-01' },
    { nickName: "Sena", date: '01-24' },
    { nickName: "Diana", date: '08-11' },
    { nickName: "Ahri", date: '02-26' },
    { nickName: "Ahri", date: '02-26' }, // ์ค‘๋ณต๋œ ๊ฐ์ฒด
];

 

๋„ค ๋ฒˆ์งธ ๊ฐ์ฒด์™€ ๋งˆ์ง€๋ง‰ ๊ฐ์ฒด์˜ ๊ฐ’์€ ๊ฐ™์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค. Set์€ ์ฐธ์กฐ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต์œผ๋กœ ์ธ์‹ํ•˜์ง€ ์•Š๊ณ  ๋‘˜ ๋‹ค ์ €์žฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ค‘๋ณต์„ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, nickName๊ณผ date ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

const newChamps = Array.from(new Set(champions.map(item => JSON.stringify(item)))).map(item => JSON.parse(item));
console.log(newChamps);

 

์ด ๋ฐฉ๋ฒ•์€ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ›„, ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

 

 

์„ธํŠธ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

๊ทธ๋Ÿผ ๋ฐ˜๋Œ€๋กœ ์„ธํŠธ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•  ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊ฐ€์š”?

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๋Œ€๊ด„ํ˜ธ ์•ˆ์—์„œ ์„ธํŠธ๋ฅผ ์ƒ๋Œ€๋กœ ์ „๊ฐœ(spread) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

const set = new Set([1, 2, 3, 4]);
const array = [...set];
 

์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ๋ณ„๋กœ ์•ˆ ์ข‹์•„ํ•˜์‹ ๋‹ค๋ฉด Array.from() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

const array = Array.from(set); // [1, 2, 3]