본문 바로가기
Javascript

스프레드연산자 (...) spread 연산

by jennyiscoding 2022. 7. 21.

하나로 뭉쳐 있는 여러 데이터들의 집합을 개별적인 값으로 분류

Iterable객체에 적용할 수 있다(Array, String, Map, Set, DOM nodelist, arguments)

 

예제)

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

let a = { ...arr }; 
let b = [...arr];
let arrObject = { '0': 1, '1': 2, '2': 3, '3': 4 }

console.log(...arr); //1 2 3 4
console.log(a); // { '0': 1, '1': 2, '2': 3, '3': 4 }
console.log(b); // [ 1, 2, 3, 4 ]

 

함수의 인자값으로 넣는 예

function sum(a, b, c) {
	return a + b + c;
}
let pre = [100, 200, 300];
console.log('sum=', sum(...pre)); //sum= 600
console.log(...pre) //100 200 300

 

몇개 수가 배열에 있는지 모르므로 첫번째, 두번째 값은 first, second에 넣고 나머지는 nums에 배열로 넣기 

function sum(first, second, ...nums) {
	console.log(first); //1
	console.log(second); //2
	console.log(nums); //[0,1,2,4]
}
sum(1, 2, 0, 1, 2, 4);

 

오브젝트합치기1)현재버전

let obj1 = { a: 3 };
let obj2 = { b: 4 };
let newMergedObj = { ...obj1, ...obj2 };

console.log(newMergedObj); //{ a: 3, b: 4 }

 

오브젝트합치기2)예전버전

let obj1 = { a: 3 };
let obj2 = { b: 4 };
// //ES5에서 오브젝트 합치기
let mergedObj = Object.assign({}, obj1, obj2);
console.log(mergedObj);

 

배열합치기1) 현재버전

let arr1 = [2, 3, 4];
let arr2 = [5, 6, 7];
const newMerged = [...arr1, ...arr2];

배열합치기2)예전버전

let arr1 = [2, 3, 4];
let arr2 = [5, 6, 7];
let merged = arr1.concat(arr2);

배열복사하기1) 현재버전

let arr1 = [2, 3, 4];
let arr2 = [5, 6, 7];
const newCopied = [...arr1];

배열복사하기2)예전버전

let arr1 = [2, 3, 4];
let arr2 = [5, 6, 7];
let copied1 = arr1.slice();

객체 스프레드 복제 시 주의할 것

const nabi = {
	name: '나비',
	kind: '고양이',
	actions: ['잠자기', '먹기'],
};

let update1 = Object.assign({}, nabi);
update1.age = 4;
update2 = { ...nabi, age: 4 };
console.log('===== 수정 전 =====');
console.log(update2);
update2.name = '냐옹이';
console.log('=====수정 후=====');
console.log(nabi);
console.log(update2);
console.log('=====주의=====');
update2.actions[0] = '낮잠자기';
console.log(nabi); 
//객체복제한건데 기존 나비의 값이 변경되어버렸다? nabi의 action을보면 배열로 되어있어서 그렇다. 주소값을 복사해버린것..
console.log(update2);

'Javascript' 카테고리의 다른 글

배열의 함수들_push,unshift,pop,shift,splice,reverse  (0) 2022.08.01
정규표현식에 대한 개념  (0) 2022.07.22
자바스크립트_구조분해할당  (0) 2022.07.21
자바스크립트_배열  (0) 2022.07.21
기명함수와 익명함수  (0) 2022.07.07