λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Programming/Javascript

[μΈμ‚¬μ΄λ“œ μžλ°”μŠ€ν¬λ¦½νŠΈ] μžλ°”μŠ€ν¬λ¦½νŠΈ 데이터 νƒ€μž…κ³Ό μ—°μ‚°μž 4 - λ°°μ—΄

배열은 μžλ°”μŠ€ν¬λ¦½νŠΈ 객체의 νŠΉλ³„ν•œ ν˜•νƒœλ‹€. 즉, Cλ‚˜ μžλ°”μ˜ λ°°μ—΄κ³Ό 같은 κΈ°λŠ₯을 ν•˜λŠ” κ°μ²΄μ§€λ§Œ, μ΄λ“€κ³ΌλŠ” λ‹€λ₯΄κ²Œ ꡳ이 크기λ₯Ό μ§€μ •ν•˜μ§€ μ•Šμ•„λ„ 되며, μ–΄λ–€ μœ„μΉ˜μ— μ–΄λŠ νƒ€μž…μ˜ 데이터λ₯Ό μ €μž₯ν•˜λ”λΌλ„ μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. 

 

λ°°μ—΄ λ¦¬ν„°λŸ΄

λ°°μ—΄ λ¦¬ν„°λŸ΄μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μƒˆλ‘œμš΄ 배열을 λ§Œλ“œλŠ” 데 μ‚¬μš©ν•˜λŠ” ν‘œκΈ°λ²•μ΄λ‹€. λ°°μ—΄ λ¦¬ν„°λŸ΄μ€ λŒ€κ΄„ν˜Έ([ ])λ₯Ό μ‚¬μš©ν•œλ‹€.

 

 

λ°°μ—΄ λ¦¬ν„°λŸ΄μ—μ„œλŠ” 각 μš”μ†Œμ˜ κ°’λ§Œμ„ ν¬ν•¨ν•œλ‹€. 

 

λ°°μ—΄μ˜ μš”μ†Œ 생성

객체가 λ™μ μœΌλ‘œ ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€ν•  수 μžˆλ“―μ΄, 배열도 λ™μ μœΌλ‘œ λ°°μ—΄ μ›μ†Œλ₯Ό μΆ”κ°€ν•  수 μžˆλ‹€. 특히, μžλ°”μŠ€ν¬λ¦½νŠΈ λ°°μ—΄μ˜ κ²½μš°λŠ” 값을 순차적으둜 넣을 ν•„μš” 없이 아무 인덱슀 μœ„μΉ˜μ—λ‚˜ 값을 λ™μ μœΌλ‘œ μΆ”κ°€ν•  수 μžˆλ‹€.

 

 

  1. 빈 λ°°μ—΄μ˜ 첫 번째 μš”μ†Œμ— 접근해도 undefined 값이 좜λ ₯λœλ‹€.
  2. 3개의 μš”μ†Œ κ°’λ§Œμ„ ν• λ‹Ήν–ˆμ§€λ§Œ emptyArrλ₯Ό 좜λ ₯ν•˜λ©΄ 8개의 λ°°μ—΄ μš”μ†Œ 값이 좜λ ₯λœλ‹€. 이것은 μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ λ°°μ—΄μ˜ 크기λ₯Ό ν˜„μž¬ λ°°μ—΄μ˜ 인덱슀 쀑 κ°€μž₯ 큰 값을 κΈ°μ€€μœΌλ‘œ μ •ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

λ°°μ—΄μ˜ length ν”„λ‘œνΌν‹°

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  배열은 length ν”„λ‘œνΌν‹°κ°€ μžˆλ‹€. length ν”„λ‘œνΌν‹°λŠ” λ°°μ—΄μ˜ μ›μ†Œ 개수λ₯Ό λ‚˜νƒ€λ‚΄μ§€λ§Œ, μ‹€μ œλ‘œ 배열에 μ‘΄μž¬ν•˜λŠ” μ›μ†Œ κ°œμˆ˜μ™€ μΌμΉ˜ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€.

→ length ν”„λ‘œνΌν‹°λŠ” λ°°μ—΄ 내에 κ°€μž₯ 큰 μΈλ±μŠ€μ— 1을 λ”ν•œ 값이닀. 

λ•Œλ¬Έμ— λ°°μ—΄μ˜ κ°€μž₯ 큰 인덱슀 값이 λ³€ν•˜λ©΄, length κ°’ λ˜ν•œ μžλ™μœΌλ‘œ 그에 맞좰 λ³€κ²½λœλ‹€.

 

 

λ°°μ—΄μ˜ 인덱슀 100 μœ„μΉ˜μ— 값을 μ €μž₯ν•œ μˆœκ°„, κ°€μž₯ 큰 μΈλ±μŠ€κ°’μΈ 100을 κΈ°μ€€μœΌλ‘œ ν•΄μ„œ λ°°μ—΄μ˜ length 값이 101둜 λŠ˜μ–΄λ‚œλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ λ©”λͺ¨λ¦¬λŠ” length 크기처럼 ν• λ‹Ήλ˜μ§€λŠ” μ•ŠλŠ”λ‹€.

 

 

  1. λ°°μ—΄ λ¦¬ν„°λŸ΄λ‘œ μ›μ†Œλ₯Ό 3개 κ°€μ§€κ³  μžˆλŠ” λ°°μ—΄ arr을 μƒμ„±ν–ˆλ‹€. μ΄ˆκΈ°μ— arr.length 값은 3이닀.
  2. 이후 arr.length의 값을 μž„μ˜λ‘œ 5둜 μˆ˜μ •ν–ˆλ”°. μ΄λ ‡κ²Œ 되면 lengthκ°€ κ°€λ¦¬ν‚€λŠ” μœ„μΉ˜κ°€ λ³€κ²½λœλ‹€. console.log() 문을 μ‹€ν–‰ν•˜λ©΄ λ°°μ—΄μ˜ 0번쨰 μΈλ±μŠ€λΆ€ν„° length-1 μΈλ±μŠ€κΉŒμ§€μ˜ μ›μ†Œλ₯Ό 좜λ ₯ν•˜λ―€λ‘œ μ›μ†Œκ°€ ν• λ‹Ήλ˜μ§€ μ•Šμ€ 3, 4번 μΈλ±μŠ€λŠ” undefined둜 좜λ ₯λ˜λŠ” 것이닀.
  3. μ΄λ²ˆμ—λŠ” length ν”„λ‘œνΌν‹° 값을 2둜 μ„€μ •ν–ˆλ‹€. 이 κ²½μš°μ—λŠ” length ν”„λ‘œνΌν‹°λ₯Ό λ²—μ–΄λ‚˜λŠ” 2번째 인덱슀 값인 '2'κ°€ μ‹€μ œλ‘œ μ‚­μ œλœλ‹€. λ•Œλ¬Έμ— console.log(arr[2]) 값이 undefined둜 좜λ ₯λ˜λŠ” 것이닀.

 

λ°°μ—΄ ν‘œμ€€ λ©”μ„œλ“œμ™€ length ν”„λ‘œνΌν‹°

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λ°°μ—΄μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ λ‹€μ–‘ν•œ ν‘œμ€€ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€. μ΄λŸ¬ν•œ λ°°μ—΄ λ©”μ„œλ“œλŠ” length ν”„λ‘œνΌν‹°λ₯Ό 기반으둜 λ™μž‘ν•˜κ³  μžˆλ‹€.

 

 

λ°°μ—΄μ˜ length ν”„λ‘œνΌν‹°λŠ” λ°°μ—΄ λ©”μ„œλ“œμ˜ λ™μž‘μ— 영ν–₯을 쀄 수 μžˆμ„λ§ŒνΌ λ°°μ—΄μ—μ„œλŠ” μ€‘μš”ν•œ ν”„λ‘œνΌν‹°μ΄λ‹€.

 

λ°°μ—΄κ³Ό 객체

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λ°°μ—΄ μ—­μ‹œ 객체닀. ν•˜μ§€λ§Œ 배열은 일반 κ°μ²΄μ™€λŠ” μ•½κ°„ 차이가 μžˆλ‹€.

 

 

 

  • colorsObj['0']이 μ•„λ‹Œ colorsObj[0]으둜 μž…λ ₯해도 μ •μƒμ μœΌλ‘œ κ²°κ³Όκ°€ 좜λ ₯λ˜λŠ” 이유 - μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 [ ] μ—°μ‚°μž 내에 μˆ«μžκ°€ μ‚¬μš©λ  경우, ν•΄λ‹Ή 숫자λ₯Ό μžλ™μœΌλ‘œ λ¬Έμžμ—΄ ν˜•νƒœλ‘œ λ°”κΏ”μ€Œ

 

 

  • λ°°μ—΄κ³Ό 객체의 차이점 1 - length ν”„λ‘œνΌν‹° 쑴재 μ—¬λΆ€
  • 배열이 μ•„λ‹Œ κ°μ²΄λŠ” length ν”„λ‘œνΌν‹°κ°€ μ—†λ‹€.

 

  • λ°°μ—΄κ³Ό 객체의 차이점 2 - ν‘œμ€€ λ°°μ—΄ λ©”μ„œλ“œ μ‚¬μš© κ°€λŠ₯ μ—¬λΆ€
  • 객체 λ¦¬ν„°λŸ΄ λ°©μ‹μœΌλ‘œ μƒμ„±ν•œ 객체의 경우, 객체 ν‘œμ€€ λ©”μ„œλ“œλ₯Ό μ €μž₯ν•˜κ³  μžˆλŠ” Object.prototype 객체가 ν”„λ‘œν† νƒ€μž…μ΄ λœλ‹€. λ°˜λ©΄μ— λ°°μ—΄μ˜ 경우 Array.prototype 객체가 ν”„λ‘œν† νƒ€μž…μ΄ 되며, Array.prototype의 ν”„λ‘œν† νƒ€μž…μ€ Object.prototype 이 λœλ‹€.