TIL - 21.06.27 πŸ‘¨β€πŸ’» - JS

μ„±ν›ˆΒ·2021λ…„ 6μ›” 27일
0

TIL

λͺ©λ‘ 보기
13/59
post-thumbnail

TIL - 21.06.27 πŸ‘¨β€πŸ’»

λ°°μ—΄


arr.splice()

λ°°μ—΄ μ—­μ‹œ 객체이기에 delete 둜 값을 μ§€μšΈ μˆ˜λŠ” μžˆμ§€λ§Œ μ§€μš΄ μš”μ†Œμžλ¦¬κ°€ 빈 μžλ¦¬κ°€ λœλ‹€.

let arr = ['1', '2', '3', '4', '5',];
delete arr[1];
console.log(arr) // ['1', empty, '3', '4', '5']

이에 λΉ„ν•΄ spliceλŠ” μš”μ†Œ μΆ”κ°€, 제거, κ΅μ²΄κΉŒμ§€ κ°€λŠ₯ν•˜λ©°,
문법은 arr.splice(index, deleteCount, 'ele1', 'ele2') 이닀.

index의 μœ„μΉ˜λΆ€ν„° deleteCount의 수 만큼의 μš”μ†Œλ₯Ό μ‚­μ œν•˜κ³  'ele1'κ³Ό 'ele2'λ₯Ό index의 μœ„μΉ˜μ— μΆ”κ°€ν•œλ‹€λŠ” λœ»μ΄λ‹€.
인수둜 index와 deleteCount만 λ”°λ‘œ μ‚¬μš©ν•  수 있고, deleteCountλ₯Ό 0으둜 ν•˜λ©΄ μš”μ†ŒμΆ”κ°€λ§Œ ν•œλ‹€.
그리고 splice λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν• λ•Œ μš”μ†Œλ₯Ό μ‚­μ œν•˜λ©΄ μ‚­μ œν•œ μš”μ†Œλ₯Ό λ°˜ν™˜ν•˜κ³  μš”μ†Œ μΆ”κ°€λ§Œ ν•œλ‹€λ©΄ 빈 배열을 λ°˜ν™˜ν•œλ‹€.
인수둜 음수λ₯Ό 받을 수 있으며 음수λ₯Ό μ‚¬μš©ν•  경우 λ°°μ—΄μ˜ λ’€μ—μ„œλΆ€ν„° μ„Όλ‹€.

let arr = ['1', '2', '3', '4', '5',];
arr.splice(1,2) // ['2', '3']; μš”μ†Œ μΆ”κ°€ν•˜μ§€ μ•Šκ³  제거만 ν•˜λŠ” 경우
console.log(arr) // ['1', '4', '5']
arr.splice(1, 0, '2', '3') // []; deleteCountλ₯Ό 0으둜 μ€˜μ„œ μš”μ†Œ μΆ”κ°€λ§Œ ν•˜λŠ” 경우
console.log(arr) // ['1', '2', '3', '4', '5']
arr.splice(-3, 2) // ['3', '4']; indexλ₯Ό 음수둜 μ£ΌλŠ” 경우
console.log(arr) // ['1', '2', '5']

arr.slice(startIndex, endIndex)

slice λ©”μ†Œλ“œλŠ” splice λ©”μ†Œλ“œλ³΄λ‹€ κ°„λ‹¨ν•œλ°, startIndexλΆ€ν„° endIndexκΉŒμ§€μ˜ 배열을 볡사해 λ°˜ν™˜ν•œλ‹€.
splice λ©”μ†Œλ“œλŠ” μ‹€μ§ˆμ μœΌλ‘œ λ°°μ—΄μ˜ μš”μ†Œμ— 영ν–₯을 μ£ΌλŠ” 반면 slice λ©”μ†Œλ“œλŠ” 볡사해 λ°˜ν™˜ν•˜κΈ°μ— 원 λ°°μ—΄μ˜ μš”μ†Œμ— 영ν–₯을 주지 μ•ŠλŠ”λ‹€.

let arr = ['1', '2', '3', '4', '5',];
arr.slice(0,3) // ['1', '2', '3']; startIndexλΆ€ν„° endIndexκΉŒμ§€μ΄μ§€λ§Œ endIndexλŠ” μ œμ™Έν•˜κ³  λ°˜ν™˜ν•œλ‹€.
console.log(arr) // ['1', '2', '3', '4', '5',]; slice λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•΄λ„ λ°°μ—΄μ˜ μš”μ†Œμ— 영ν–₯이 μ—†λ‹€.
arr.slice(2) // ['3', '4', '5']; 인수둜 μΈλ±μŠ€ν•˜λ‚˜λ§Œ λ„£μœΌλ©΄ κ·Έ μΈλ±μŠ€λΆ€ν„° λ°°μ—΄ λκΉŒμ§€ λ°˜ν™˜ν•œλ‹€.
arr.slice() // ['1', '2', '3', '4', '5']; 인수λ₯Ό 넣지 μ•ŠμœΌλ©΄ 원 배열을 κ·ΈλŒ€λ‘œ λ³΅μ‚¬ν•œλ‹€.
arr.slice(-2) // ['4', '5'] // 음수 인덱슀λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
arr.slice(3, 1) // []; startIndex보닀 endIndexκ°€ μ•žμ— 있으면 빈 배열을 λ°˜ν™˜ν•œλ‹€.
arr.slice(3, 10)// ['4', '5']; arr.length보닀 큰 값이 endIndex μžλ¦¬μ— 와도 λ°°μ—΄ λκΉŒμ§€λ§Œ λ³΅μ‚¬ν•œλ‹€.

arr.concat(arg1, arg2, ..., argn)

concat λ©”μ†Œλ“œλŠ” κΈ°μ‘΄ 배열을 μ΄μš©ν•΄ μƒˆ 배열을 λ§Œλ“€κ±°λ‚˜ κΈ°μ‘΄ 배열듀이 합쳐진 배열을 λ§Œλ“€λ•Œ μ‚¬μš©ν•œλ‹€.
인수둜 λ°°μ—΄μ΄λ‚˜ μ—¬λŸ¬ νƒ€μž…μ˜ 값이 μ˜€λŠ”λ° 인수의 κ°―μˆ˜μ— μ œν•œμ€ μ—†λ‹€.
concat λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν•΄μ„œ μ‚¬μš©ν•œ λ°°μ—΄μ˜ μš”μ†ŒλŠ” λ³€ν•˜μ§€ μ•ŠμœΌλ©° λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  경우 λ°°μ—΄κ³Ό μΈμžκ°€ 합쳐진 배열을 λ°˜ν™˜ν•œλ‹€.

let arr = [1, 2, 3, 4, 5,];
arr.concat([6, 7]) // [1, 2, 3, 4, 5, 6, 7]
console.log(arr) // [1, 2, 3, 4, 5]; arr은 λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€.
arr.concat('string', false) // [1, 2, 3, 4, 5, 'string', false] μ—¬λŸ¬ νƒ€μž…μ˜ 인수λ₯Ό ν•©μΉ  수 μžˆλ‹€.

λ°°μ—΄κ³Ό 객체λ₯Ό ν•©μΉ  경우 κ°μ²΄λŠ” ν•œ μš”μ†Œλ‘œμ„œ 합쳐진닀.
ν•˜μ§€λ§Œ 특수 ν”„λ‘œνΌν‹°μΈ [Symbol.isConcatSpreadable] 값이 참으둜 있고 lengthλ₯Ό μ •ν•΄μ£Όλ©΄ 객체 μžμ²΄κ°€ μš”μ†Œκ°€ λ˜λŠ” 것이 μ•„λ‹Œ ν”„λ‘œνΌν‹° 값이 μš”μ†Œλ‘œ 합쳐진닀.

let arr = [1, 2, 3,];

let object ={
  1: 'value1',
  2: 'value2',
  3: 'value3',
}
arr.concat(object) // [1, 2, 3, {1: value1, 2: value2, 3: value3}]

let object ={
  1: 'value1',
  2: 'value2',
  3: 'value3',
  [Symbol.isConcatSpreadable]: true,
  length: 2,
}
arr.concat(object) // [1, 2, 3, empty, value1]
// Symbol.isConcatSpreadable 이 참이고 lengthκ°€ 2라면 objectλŠ” 인덱슀 0은 λΉ„μ–΄μžˆκ³ (정해지지 μ•Šμ•˜κ³ )
// 인덱슀 1은 value1인 λ°°μ—΄λ‘œ μ·¨κΈ‰ν•˜κ²Œ λœλ‹€.
// λ§Œμ•½ 객체의 ν”„λ‘œνΌν‹° ν‚€κ°€ μˆ«μžκ°€ μ•„λ‹ˆλΌλ©΄ μš”μ†Œλ‘œ ν• λ‹Ήλ˜μ§€ μ•ŠμœΌλ©° undefined만 λ°˜ν™˜λœλ‹€.

GOOD πŸ˜‰

μ»¨λ””μ…˜μ΄ μ•ˆμ’‹μ•„λ„ μ‘°κΈˆμ΄λΌλ„ κ³΅λΆ€ν–ˆλ‹€.

BAD πŸ˜₯

μ»¨λ””μ…˜ 관리λ₯Ό λͺ»ν•΄ 곡뢀λ₯Ό λ„ˆλ¬΄ λͺ»ν–ˆλ‹€.

TO DO πŸ”₯

  • 객체
  • λ°°μ—΄
  • Node.js
  • React

Retrospect 🧐

ν† μš”μΌμ— λ„ˆλ¬΄ λ‹¬λ €μ„œ μΌμš”μΌ λ‚΄λ‚΄ μ»¨λ””μ…˜μ΄ λ„ˆλ¬΄ μ•ˆμ’‹μ•˜λ‹€.
아무리 μ•ˆμ’‹μ•„λ„ μ‘°κΈˆμ΄λΌλ„ κ³΅λΆ€ν•˜λ €κ³  ν•˜κΈ΄ ν–ˆλŠ”λ° μ»¨λ””μ…˜ λ‚œμ‘°μ—λ„ μ‘°κΈˆμ΄λΌλ„ 곡뢀λ₯Ό ν–ˆλ‹€λŠ” 것과 μ»¨λ””μ…˜ 관리λ₯Ό λͺ»ν–ˆλ‹€λŠ” 것이 κ²Ήμ³μ„œ 기뢄이 λ¬˜ν•˜λ‹€.

μ•ˆλ“€μ–΄κ°€λŠ”λ° κ°•μ œλ‘œ λ³΄κ³ μžˆλŠ”κ±°λ³΄λ‹¨ 빨리자고 μΌμ–΄λ‚˜μ„œ 아침에 ν•΄μ•Όκ² λ‹€.

λ‚΄κ°€ μ½”μŠ€ 쀑에 술 ν•œλͺ¨κΈˆμ΄λΌλ„ λ§ˆμ‹œλ©° κ°œλ‹€. 그리고 κ°œκ°€ λ˜μ—ˆλ‹€.

Reference πŸ™‡

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ - https://ko.javascript.info/

profile
μ–΄λ–»κ²Œ 이걸 ν’€μ–΄λ‚Ό 수 μžˆμ„κΉŒ

0개의 λŒ“κΈ€