6. Keyd collection

  • ν‚€ μ»¬λ ‰μ…˜μ€ 인덱슀 λŒ€μ‹  ν‚€λ‘œ μ •λ ¬λœ 데이터 μ»¬λ ‰μ…˜μœΌλ‘œ, ν‚€-κ°’ 쌍으둜 κ΅¬μ„±λœλ‹€.

  • μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” λ§΅(Map)κ³Ό μ§‘ν•©(Set)μ΄λΌλŠ” 두 κ°€μ§€ μœ ν˜•μ˜ ν‚€ μ»¬λ ‰μ…˜μ΄ μžˆλ‹€.

Map

  • ν‚€, κ°’ 쌍으둜 된 객체λ₯Ό 담을 수 μžˆλŠ” μžλ£Œκ΅¬μ‘°μ΄λ‹€.

  • ν‚€λŠ” μœ λ‹ˆν¬ν•˜λ‹€(쀑볡 λΆˆκ°€λŠ₯). ν‚€κ°€ λ‹€λ₯΄λ‹€λ©΄ 값은 쀑볡 κ°€λŠ₯ν•˜λ‹€.

  • κ°μ²΄μ—μ„œμ˜ ν‚€λŠ” λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•˜μ§€λ§Œ, Map 은 μ–΄λ–€ νƒ€μž…λ„ κ°€λŠ₯ν•˜λ‹€.

  • μ΄ν„°λŸ¬λΈ”(순회 κ°€λŠ₯)

  • ν‚€-값이 λ“€μ–΄κ°„ μˆœμ„œλŒ€λ‘œ μˆœμ„œκ°€ 보μž₯λœλ‹€.

  • μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ˜€λΈŒμ νŠΈμ™€ λΉ„μŠ·ν•˜λ‚˜, Map 을 μ‚¬μš©ν•˜λ©΄ 래퍼 객체의 μ—¬λŸ¬κ°€μ§€ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€. 즉, μ˜€λΈŒμ νŠΈμ™€ 맡은 μΈν„°νŽ˜μ΄μŠ€κ°€ λ‹€λ₯΄λ‹€.

생성

const map = new Map([
  ['key1', 'k'],
  ['key2', 'k'],
]);
console.log(map); // Map(2) { 'key1' => 'k', 'key2' => 'k' }

obj1 = { key1: 'k' };
const map2 = new Map([[obj1]]);
console.log(map2);

μ ‘κ·Ό

μΆ”κ°€

μ‚­μ œ

Map 속성, λ©”μ„œλ“œ

Set

  • μˆœμ„œκ°€ 보μž₯λ˜μ§€ μ•ŠλŠ”λ‹€.

  • κ°’μ˜ 쀑볡이 λΆˆκ°€λŠ₯ν•˜λ‹€.

  • μ΄ν„°λŸ¬λΈ”(순회 κ°€λŠ₯)

  • μˆœμ„œκ°€ 보μž₯λ˜μ–΄μžˆμ§€ μ•Šλ‹€.

Question

μΈν„°νŽ˜μ΄μŠ€λž€?

μΈν„°νŽ˜μ΄μŠ€λŠ” 일반적으둜 νƒ€μž… 체크λ₯Ό μœ„ν•΄ μ‚¬μš©λ˜λ©° λ³€μˆ˜, ν•¨μˆ˜, ν΄λž˜μŠ€μ— μ‚¬μš©λ  수 μžˆλ‹€. λ˜ν•œ, μ—¬λŸ¬κ°€μ§€ νƒ€μž…μ„ κ°–λŠ” ν”„λ‘œνΌν‹°λ‘œ 이루어진 μƒˆλ‘œμš΄ νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 것과 μœ μ‚¬ν•˜λ‹€. μΈν„°νŽ˜μ΄μŠ€μ— μ„ μ–Έλœ ν”„λ‘œνΌν‹° λ˜λŠ” λ©”μ„œλ“œμ˜ κ΅¬ν˜„μ„ κ°•μ œν•˜μ—¬ 일관성을 μœ μ§€ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이닀.

객체의 ν‚€λŠ” λ‹¨μˆœ λ¬Έμžμ—΄μ΄ μ•„λ‹Œ κ²½μš°μ—λŠ” 항상 λŒ€κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€ (Computed Property Name)

// [JavaScript] Computed Property Name // https://velog.io/@yujuck/object-key%EC%97%90-%EB%B3%80%EC%88%98%EB%A5%BC-%EB%84%A3%EC%9C%BC%EB%A0%A4%EB%A9%B4-Computed-Property-Name // https://ui.dev/computed-property-names

Last updated