[JS] π μλ°μ€ν¬λ¦½νΈ μλ£ν Set π© μ 리
μ (Set)
μ (Set)μ μ€λ³΅μ νμ©νμ§ μλ κ°μ λͺ¨μλμ νΉλ³ν 컬λ μ μ λλ€.
μ μ ν€κ° μλ κ°μ΄ μ μ₯λ©λλ€.
let sett = new Set(["bananas", "oranges", "bananas", "apples", "bananas"]);
// Set(3) {'bananas', 'oranges', 'apples'}
new Set(iterable) – μ μ λ§λλλ€. μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό μ λ¬λ°μΌλ©΄(λκ° λ°°μ΄μ μ λ¬λ°μ) κ·Έ μμ κ°μ 볡μ¬ν΄ μ μ λ£μ΄μ€λλ€.
set.add(value) – κ°μ μΆκ°νκ³ μ μμ μ λ°νν©λλ€.
set.delete(value) – κ°μ μ κ±°ν©λλ€. νΈμΆ μμ μ μ λ΄μ κ°μ΄ μμ΄μ μ κ±°μ μ±κ³΅νλ©΄ true, μλλ©΄ falseλ₯Ό λ°νν©λλ€.
set.has(value) – μ λ΄μ κ°μ΄ μ‘΄μ¬νλ©΄ true, μλλ©΄ falseλ₯Ό λ°νν©λλ€.
set.clear() – μ μ λΉμλλ€.
set.size – μ μ λͺ κ°μ κ°μ΄ μλμ§ μΈμ€λλ€.
μ λ΄μ λμΌν κ°(value)μ΄ μλ€λ©΄ set.add(value)μ μ무리 λ§μ΄ νΈμΆνλλΌλ μλ¬΄λ° λ°μμ΄ μμ κ²λλ€.
μ λ΄μ κ°μ μ€λ³΅μ΄ μλ μ΄μ κ° λ°λ‘ μ΄ λλ¬Έμ΄μ£ .
β
λ°©λ¬Έμ λ°©λͺ λ‘μ λ§λ λ€κ³ κ°μ ν΄ λ΄ μλ€.
ν λ°©λ¬Έμκ° μ¬λ¬ λ² λ°©λ¬Έν΄λ λ°©λ¬Έμλ₯Ό μ€λ³΅ν΄μ κΈ°λ‘νμ§ μκ² λ€κ³ κ²°μ λ΄λ¦° μν©μ λλ€.
μ¦, ν λ°©λ¬Έμλ 'λ¨ ν λ²λ§ κΈ°λ‘’λμ΄μΌ ν©λλ€.
β
μ΄λ μ ν©ν μλ£κ΅¬μ‘°κ° λ°λ‘ μ μ λλ€.
let set = new Set();
let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };
// μ΄λ€ κ³ κ°(john, mary)μ μ¬λ¬ λ² λ°©λ¬Έν μ μμ΅λλ€.
set
.add(john)
.add(pete)
.add(mary)
.add(john)
.add(mary); // 체μ΄λ
// μ
μλ μ μΌλ¬΄μ΄ν κ°λ§ μ μ₯λ©λλ€.
alert( set.size ); // 3
for (let user of set) {
alert(user.name); // // John, Pete, Mary μμΌλ‘ μΆλ ₯λ©λλ€.
}
μ λμ λ°°μ΄μ μ¬μ©νμ¬ λ°©λ¬Έμ μ 보λ₯Ό μ μ₯ν ν,
μ€λ³΅ κ° μ¬λΆλ λ°°μ΄ λ©μλμΈ arr.findλ₯Ό μ΄μ©ν΄ νμΈν μλ μμ΅λλ€.
νμ§λ§ arr.findλ λ°°μ΄ λ΄ μμ μ 체λ₯Ό λ€μ Έ μ€λ³΅ κ°μ μ°ΎκΈ° λλ¬Έμ, μ λ³΄λ€ μ±λ₯ λ©΄μμ λ¨μ΄μ§λλ€.
λ°λ©΄, μ μ κ°μ μ μΌλ¬΄μ΄ν¨μ νμΈνλλ° μ΅μ νλμ΄μμ΅λλ€.
β
Setμ κ°μ λ°λ³΅ μμ
for..ofλ forEachλ₯Ό μ¬μ©νλ©΄ μ μ κ°μ λμμΌλ‘ λ°λ³΅ μμ μ μνν μ μμ΅λλ€.
let set = new Set(["oranges", "apples", "bananas"]); // {"oranges", "apples", "bananas"}
for (let value of set) alert(value);
// forEachλ₯Ό μ¬μ©ν΄λ λμΌνκ² λμν©λλ€.
set.forEach((value, valueAgain, set) => {
alert(value);
});
ν₯λ―Έλ‘μ΄ μ μ΄ λμ λλ€μ. forEachμ μ°μΈ μ½λ°± ν¨μλ μΈ κ°μ μΈμλ₯Ό λ°λλ°,
첫 λ²μ§Έλ κ°, λ λ²μ§Έλ κ°μ κ°μΈ valueAgainμ λ°κ³ μμ΅λλ€. μΈ λ²μ§Έλ λͺ©ννλ κ°μ²΄(μ )μ΄κ³ μ.
μ¦, λμΌν κ°μ΄ μΈμμ λ λ² λ±μ₯νκ³ μμ΅λλ€.
β
μ΄λ κ² κ΅¬νλ μ΄μ λ 맡과μ νΈνμ± λλ¬Έμ λλ€.
맡μ forEachμ μ°μΈ μ½λ°±μ΄ μΈ κ°μ μΈμλ₯Ό λ°μ λλ₯Ό μν΄μμ£ .
μ΄μν΄ λ³΄μ΄κ² μ§λ§ μ΄λ κ² κ΅¬νν΄ λμκΈ° λλ¬Έμ 맡μ μ μΌλ‘ νΉμ μ μ 맡μΌλ‘ κ΅μ²΄νκΈ°κ° μ½μ΅λλ€.
β
μ μλ 맡과 λ§μ°¬κ°μ§λ‘ λ°λ³΅ μμ μ μν λ©μλκ° μμ΅λλ€.
set.keys() – μ λ΄μ λͺ¨λ κ°μ ν¬ν¨νλ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°νν©λλ€.
set.values() – set.keysμ λμΌν μμ μ ν©λλ€. 맡과μ νΈνμ±μ μν΄ λ§λ€μ΄μ§ λ©μλμ λλ€.
set.entries() – μ λ΄μ κ° κ°μ μ΄μ©ν΄ λ§λ [value, value] λ°°μ΄μ ν¬ν¨νλ μ΄ν°λ¬λΈ κ°μ²΄λ₯Ό λ°νν©λλ€. 맡과μ νΈνμ±μ μν΄ λ§λ€μ΄μ‘μ΅λλ€.
Reference