Skip to content

Map κ³Ό Set

iforget edited this page May 1, 2020 · 1 revision

Map

킀와 값을 μ—°κ²°ν•˜κΈ° μœ„ν•œ 자료ꡬ쑰

  • ES6 μ΄μ „μ—λŠ” 객체λ₯Ό λŒ€μ‹  μ‚¬μš©ν•¨μœΌλ‘œμ¨ μƒκΈ°λŠ” 단점듀
    • ν”„λ‘œν† νƒ€μž… 체인으둜 μΈν•œ μ˜λ„ν•˜μ§€ μ•Šμ€ μ—°κ²°
    • κ°μ²΄μ•ˆμ— μ—°κ²°λœ 킀와 값이 λͺ‡κ°œλ‚˜ λ˜λŠ”μ§€ μ‰½κ²Œ μ•ŒκΈ° 어렀움
    • 객체λ₯Ό ν‚€λ‘œ μ‚¬μš©ν•˜μ§€ λͺ»ν•¨
    • 객체λ₯Ό μ‚¬μš©ν•˜λ©΄ ν”„λ‘œνΌν‹° μˆœμ„œλ₯Ό μ „ν˜€ 보μž₯ν•˜μ§€ μ•ŠμŒ
  • μ΄ν„°λŸ¬λΈ” 객체
const u1 = {name: 'Cynthia'};
const u2 = {name: 'Jackson'};
const u3 = {name: 'Olive'};
const u4 = {name: 'James'};
 
const userRoles = new Map();
userRoles.set(u1, 'User');
userRoles.set(u2, 'User');
userRoles.set(u3, 'Admin');
 
const userRoles2 = new Map();
userRoles2
    .set(u1, 'User')
    .set(u2, 'User')
    .set(u3, 'Admin');
 
const userRoles3 = new Map([
    [u1, 'User'],
    [u2, 'User'],
    [u3, 'Admin']
]);
 
 
console.log(userRoles.get(u3)); //Admin
console.log(userRoles.has(u3)); //true
 
console.log(userRoles.get(u4)); //undefined
console.log(userRoles.has(u4)); //false
 
console.log(userRoles.size); //3
 
userRoles.keys(); //ν‚€λ“€μ˜ μ΄ν„°λŸ¬λΈ” 객체 λ°˜ν™˜ MapIterator
userRoles.values(); //κ°’λ“€μ˜ μ΄ν„°λŸ¬λΈ” 객체 λ°˜ν™˜
userRoles.entries(); // [ν‚€,κ°’] λ°°μ—΄λ‘œ 이뀄진 μ΄ν„°λŸ¬λΈ” 객체 λ°˜ν™˜
 
for (let ur of userRoles.entries())
    console.log(`${ur[0].name}: ${ur[1]}`);
 
for (let [u, r] of userRoles.entries())
    console.log(`${u.name}: ${r}`);
 
// entries()λ©”μ„œλ“œλŠ” 맡의 κΈ°λ³Έ μ΄ν„°λ ˆμ΄ν„°
for (let [u, r] of userRoles)
    console.log(`${u.name}: ${r}`);
 
//νŠΉμ •μš”μ†Œλ₯Ό μ§€μšΈλ•Œ
userRoles.delete(u2);
//μš”μ†Œλ₯Ό λͺ¨λ‘ μ§€μšΈλ•Œ
userRoles.clear();

WeakMap

  • Map과의 차이점
    • ν‚€λŠ” λ°˜λ“œμ‹œ 객체여야 함
    • 내뢀에 μ €μž₯된 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” 값이 없을 경우 κ°€λΉ„μ§€ μ½œλ ‰μ…˜μ˜ λŒ€μƒμ΄ 됨
    • WeakMap은 μ΄ν„°λŸ¬λΈ”μ΄ μ•„λ‹ˆλ©° size도 μ•Œμˆ˜ μ—†λ‹€
    • clear() λ©”μ„œλ“œ μ—†μŒ

Set

쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” 데이터 μ§‘ν•©

  • μ‚½μž…ν•œ μˆœμ„œλŒ€λ‘œ μ •λ ¬λ˜μ–΄ 듀어감
  • μ΄ν„°λŸ¬λΈ” 객체
const roles = new Set();
 
roles.add("User");
roles.add("Admin");
 
roles.size; //2
 
console.log(roles.has("User")); //true
 
for(let role of roles)
    console.log(role);
 
roles.delete("Admin"); // true
roles.delete("Admin"); //false

WeakSet

  • Set과의 차이점
    • ν‚€λŠ” λ°˜λ“œμ‹œ 객체여야 함
    • 내뢀에 μ €μž₯된 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” 값이 없을 경우 κ°€λΉ„μ§€ μ½œλ ‰μ…˜μ˜ λŒ€μƒμ΄ 됨
    • WeakSet은 μ΄ν„°λŸ¬λΈ”μ΄ μ•„λ‹ˆλ©° size도 μ•Œμˆ˜ μ—†λ‹€
    • clear() λ©”μ„œλ“œ μ—†μŒ

Clone this wiki locally