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

λ…μ„œ λͺ©λ‘/λͺ¨λ”₯λ‹€ Modern JS Deep Dive

[λͺ¨λ”₯λ‹€] 35μž₯ μŠ€ν”„λ ˆλ“œ 문법

728x90

...을 μ΄μš©ν•΄ 뭉쳐 μžˆλŠ” κ°’λ“€μ˜ 집합을 νŽΌμ³μ„œ κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μœΌλ‘œ λ§Œλ“ λ‹€.

πŸ“Œ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ κ²°κ³ΌλŠ” 값이 μ•„λ‹ˆλ‹€.

λ”°λΌμ„œ μŠ€ν”„λ ˆλ“œ λ¬Έλ²•μ˜ κ²°κ³ΌλŠ” λ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†λ‹€.

 

🩻 35.1 ν•¨μˆ˜ 호좜문의 인수 λͺ©λ‘μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우

 

Math.max()

Math.max(...[1, 2, 4, 5]) 이런 μ‹μœΌλ‘œ μ‚¬μš© κ°€λŠ₯.

- 개수λ₯Ό ν™•μ •ν•  수 μ—†λŠ” κ°€λ³€ 인자 ν•¨μˆ˜

 

πŸ“ŒRest νŒŒλΌλ―Έν„°μ™€ ν—·κ°ˆλ¦¬μ§€ 말 것!

Rest νŒŒλΌλ―Έν„° : ν•¨μˆ˜μ— μ „λ‹¬λœ μΈμˆ˜λ“€μ˜ λͺ©λ‘μ„ λ°°μ—΄λ‘œ 전달받기 μœ„ν•¨.

μŠ€ν”„λ ˆλ“œ 문법 : μ—¬λŸ¬κ°œμ˜ 값이 ν•˜λ‚˜λ‘œ λ­‰μ³μžˆλŠ” λ°°μ—΄κ³Ό 같은 μ΄ν„°λŸ¬λΈ”μ„ νŽΌμ³μ„œ κ°œλ³„μ μΈ κ°’λ“€μ˜ λͺ©λ‘μ„ λ§Œλ“œλŠ” 것.

=> μ„œλ‘œ λ°˜λŒ€μ˜ κ°œλ…

//Rest 문법 μ˜ˆμ‹œ

function foo(...rest) {
  console.log(Array.isArray(rest)); // true
  console.log(rest); // [ 1, 2, 3, 4, 5 ]
}

foo(1, 2, 3, 4, 5);

 

 

 

 

 

🩻 35.2 λ°°μ—΄ λ¦¬ν„°λŸ΄ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우 

 

35.2.1 concat

- 2개의 배열을 1개의 λ°°μ—΄λ‘œ κ²°ν•©ν•˜κ³  싢은 경우, concat λŒ€μ‹  μ‚¬μš© κ°€λŠ₯.

const arr1 = [1,2].concat([3,4]);
const arr2 = [...[1,2], ...[3,4];

//λ‘˜ λ‹€ [1, 2, 3, 4]

 

35.2.2 splice

- λ°°μ—΄μ˜ 쀑간에 λ‹€λ₯Έ μš”μ†Œλ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•  λ•Œ

const arr1 = [1,4];
const arr2 = [2, 3];

//splice μ‚¬μš©
arr1.splice(1, 0, arr2); //[1, [2, 3], 4] κ°€ λ‚˜μ˜΄.

//spread 와 ν•¨κ»˜ μ‚¬μš©
arr1.splice(1, 0, ...arr2); //[1, 2, 3, 4]

 

35.2.3 λ°°μ—΄ 볡사

const arr = [1, 2];

arr.slice();  ν•œ 것과
[...arr] ν•œ 것과 κ°™μŒ

=> 각 λ°°μ—΄μ˜ 얕은 볡사가 이루어짐.

 

35.2.4 μ΄ν„°λŸ¬λΈ”을 λ°°μ—΄λ‘œ λ³€ν™˜

 

 

 

 

🩻 35.3 객체 λ¦¬ν„°λŸ΄ λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 경우 

 

일반 객체도 μŠ€ν”„λ ˆλ“œ μ—°μ‚°μž μ‚¬μš© κ°€λŠ₯.

const merged = { x:1, y:2, ...{a:3, b:4}};
console.log(merged); 
//{ x:1, y:2, a:3, b:4}

=> ν”„λ‘œνΌν‹°κ°€ μ€‘λ³΅λ˜λŠ” 경우, 뒀에 μœ„μΉ˜ν•œ ν”„λ‘œνΌν‹°κ°€ μš°μ„ κΆŒμ„ κ°–λŠ”λ‹€.

{ ...{x:1, y:2}, ...{y:10, z:3}}
// { x:1, y:10, z:3 }

 

728x90
λ°˜μ‘ν˜•