μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό ν™œμ„±ν™” ν•΄μ£Όμ„Έμš”

SpreadOperator

 ·  β˜• 2 min read · πŸ‘€... 쑰회수

μ „κ°œμ—°μ‚°μžλž€?

μ „κ°œ μ—°μ‚°μžλŠ” λ‚˜μ—΄λ˜λŠ” 자료λ₯Ό μΆ”μΆœν•˜κ±°λ‚˜, μ—°κ²°ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

ES6 μ΄μ „μ—λŠ” λ°°μ—΄μ˜ 일뢀 μš”μ†Œλ‚˜ 객체의 일뢀뢄을 μ—°κ²°ν•˜λ €λ©΄ 각 λ‚΄μž₯ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ•Ό ν–ˆλ‹€.

ES6μ—μ„œ μ „κ°œ μ—°μ‚°μžμ˜ λ„μž…μœΌλ‘œ κ°„λ‹¨ν•˜κ²Œ 자료λ₯Ό μΆ”μΆœν•˜κ±°λ‚˜ μ—°κ²°ν•  수 있게 λ˜μ—ˆλ‹€.

μ‚¬μš©μ€ λ°°μ—΄μ΄λ‚˜ 객체의 이름 μ•žμ— λ§ˆμΉ¨ν‘œ 3개 …λ₯Ό λΆ™μ—¬μ£Όλ©΄ λœλ‹€.

μ‰½κ²Œ μƒκ°ν•˜λ©΄ κ·Έλƒ₯ κ°μ²΄λ‚˜ λ°°μ—΄ μ•ˆμ˜ 값을 λΉΌμ„œ μƒˆλ‘œμš΄ κ°μ²΄λ‚˜ 배열에 λ„£μ–΄μ€€λ‹€κ³  μƒκ°ν•˜λ©΄ λœλ‹€.

μ „κ°œμ—°μ‚°μž μ—†μ„λ•Œ VS μ „κ°œμ—°μ‚°μž μžˆμ„λ•Œ

λ°°μ—΄μ—μ„œμ˜ μ „κ°œμ—°μ‚°μž

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
μ „κ°œμ—°μ‚°μžκ°€ μ—†μ„λ•Œ

var arr1 = ['one', 'two'];
var arr2 = ['three', 'four'];
var result = arr1.concat(arr2);
// λ˜λŠ”
var result = [arr1[0], arr1[1], arr2[0], arr2[1]];
// λ˜λŠ”
var result = [].concat(arr1, arr2);
console.log(result);
1
2
3
4
5
6
μ „κ°œμ—°μ‚°μžκ°€ μžˆμ„ λ•Œ

var arr1 = ['one', 'two'];
var arr2 = ['three', 'four'];
var result = [...arr1, ...arr2];
console.log(result);

μœ„ λ‘κ°œμ˜ μ½”λ“œλŠ” 였λ₯Έμͺ½μ˜ 같은 κ²°κ³Όλ₯Ό 좜λ ₯ν•œλ‹€.

기쑴의 배열을 ν•©μΉ˜λ €λ©΄ concatμ΄λ‚˜ sliceλ“± λ°°μ—΄ λ¦¬ν„°λŸ΄ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν–ˆλ‹€. ν•˜μ§€λ§Œ μ „κ°œμ—°μ‚°μžλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ μœ„μ™€κ°™μ΄ κ°„λ‹¨ν•˜κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€.

κ°μ²΄μ—μ„œμ˜ μ „κ°œμ—°μ‚°μž

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
var obj1 = { one: 1, two: 2 };
var obj2 = { three: 3, four: 4 };
var result = {
  one: obj1.one,
  two: obj1.two,
  three: obj2.three,
  four: obj2.four,
};
// λ˜λŠ”
var result = Object.assign({}, obj1, obj2);
// λ˜λŠ”
var result = Object.assign(obj1, obj2);
console.log(result);
1
2
3
4
var obj1 = { one: 1, two: 2 };
var obj2 = { three: 3, four: 4 };
var result = { ...obj1, ...obj2 };
console.log(result);

ν•¨μˆ˜μ—μ„œμ˜ μ „κ°œμ—°μ‚°μž

1
2
3
4
5
6
7
8
9
function func() {
  var arr = Array.prototype.slice.call(arguments);
  console.log(arr);
  console.log(arr[0]);
}

func(1, 2, 3, 4);
// (4) [1, 2, 3, 4]
// 1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function func(...args) {
  var arr = [...args];
  var [one, ...others] = args; // ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή
  console.log(arr);
  console.log(one);
}

func(1, 2, 3, 4);
// (4) [1, 2, 3, 4]
// 1

ν•¨μˆ˜μ—μ„œ 인자둜 λ„˜κ²¨μ€„λ•Œ μΈμžλ“€μ€ argumentsλΌλŠ” ν•¨μˆ˜ λ‚΄λΆ€μ˜ λ°°μ—΄λ‘œ μ €μž₯λœλ‹€.

λ„˜μ–΄μ˜¨ 인자의 수λ₯Ό μ œν•œν•˜μ§€ μ•Šκ±°λ‚˜ μ–Όλ§ˆλ‚˜ 받을지 μ˜ˆμƒν•  수 μ—†λŠ” μƒν™©μ—λŠ” argumentsλ₯Ό μ‚¬μš©ν•˜κ²Œ λ˜λŠ”λ° 이 λ˜ν•œ μ „κ°œ μ—°μ‚°μžλ‘œ λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€.

μ „κ°œμ—°μ‚°μž μ‚¬μš©μ˜ˆμ œ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
  const fetchMovies = (endpoint) => {
        fetch(endpoint)
            .then(response => response.json())
            .then(response => {
                //받은 movies arrayλ₯Ό stateμ•ˆμ— λ„£λŠ” 뢀뢄이닀.
                // setMovies([...response.results])λ©΄ κΈ°μ‘΄ μ˜ν™”λ“€μ΄ λ‚ μ•„κ°€κ³  μƒˆλ‘œμš΄ μ˜ν™”κ°€ 그자리λ₯Ό μ±„μš°κ²Œ λœλ‹€.
                //μ΄λ ‡κ²Œ ν•΄μ£Όλ©΄ λ°°μ—΄μ—μ•ˆμ— 기쑴것과 μƒˆλ‘œμš΄ 것이 같이 μ‘΄μž¬ν•˜κ²Œ λœλ‹€.
                //deepcopyλ₯Ό ν•˜κΈ°μœ„ν•΄ μ „κ°œμ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ 배열에 넣어쀬닀.
                setMovies([...Movies, ...response.results])
                console.log(...Movies)
                setMainMovieImage(response.results[0])
                setCurrentPage(response.page)
            })
    }
κ³΅μœ ν•˜κΈ°

brinst
글쓴이
brinst
Backend Developer

λͺ©μ°¨