스프레드 연산자
// 오브젝트
const obj = {
a : 'a value',
b : 'b value'
};
// object -> object
console.log('object -> object',{...obj});
try{
console.log('object -> array',[...obj]);
}catch(e){
console.debug('object -> array',e)
}
// 배열
const arr = [1,2,3];
//array -> array
console.log('array -> array',[...arr]);
//array -> object
console.log('array -> object',{...arr});
// 문자열
const str = 'abcd';
//str -> array
console.log('str -> array',[...str]);
//str -> object
console.log('str -> object',{...str});
// 결과
// object -> array 로 카피하는것 빼고는 다 성공했다
object -> object { a: 'a value', b: 'b value' }
object -> array TypeError: obj is not iterable
array -> array [ 1, 2, 3 ]
array -> object { '0': 1, '1': 2, '2': 3 }
str -> array [ 'a', 'b', 'c', 'd' ]
str -> object { '0': 'a', '1': 'b', '2': 'c', '3': 'd' }
const obj = {
a : 'a value',
b : 'b value'
};
// object -> object
console.log('object -> object',{a: 'old value',b:'old value',...obj});
const arr = [1,2,3];
//array -> array
console.log('array -> array',[1,2,3,...arr]);
//array -> object
console.log('array -> object',{
'0' : 'old 0',
'1':'old 1',
'2' : 'old 2',
...arr
});
const str = 'abcd';
//str -> array
console.log('str -> array',['a','b','c','d',...str]);
//str -> object
console.log('str -> object',{
'0' : 'old 0',
'1':'old 1',
'2' : 'old 2',
...str
});
// 같은 키로 있을경우 스프레드 연산자의 값으로 덮어쓰기 된다
// 배열과 같은 경우는 새로운 인덱스에 추가 된다
object -> object { a: 'a value', b: 'b value' }
array -> array [ 1, 2, 3, 1, 2, 3 ]
array -> object { '0': 1, '1': 2, '2': 3 }
str -> array [
'a', 'b', 'c',
'd', 'a', 'b',
'c', 'd'
]
str -> object { '0': 'a', '1': 'b', '2': 'c', '3': 'd' }