펼침연산자 ...
배열을 펼쳐서 복사할 수 있는 녀석으로 기존 데이터의 참조를 끊고, 새로운 메모리에 새로운 데이터가 들어가게 된다.
const arr = [1, 2, 3, 4];
const spreadOperator = [...arr];
console.log(spreadOperator); //[1,2,3,4]
console.log(arr === spreadOperator); //false
spreadOperator은 arr을 복사한 것으로 값은 동일하지만 동등한지 비교하면 false를 리턴하게 된다.
예)
const arr = [1, 2, 3, 4];
console.log(arr); //[1,2,3,4]
console.log(...arr); //1,2,3,4
console.log([...arr]); // [1,2,3,4]
카피한 데이터를 또 다시 배열로 만들 수 있다.
concat() 대체
const arr = [1, 2, 3, 4];
const arr2 = ['^_^', '^ㅠ^'];
console.log(arr.concat(arr2)); //[1, 2, 3, 4, "^_^", "^ㅠ^"]
console.log([...arr, ...arr2]); //[1, 2, 3, 4, "^_^", "^ㅠ^"]
console.log(['원하는 곳에 삽입 가능', ...arr2, '꼽사리2', 3]); //["원하는 곳에 삽입 가능", "^_^", "^ㅠ^", "꼽사리2", 3]
concat을 대체할 수 있는 펼침연산자는 배열 사이에 특정 데이터나 배열을 삽입하는 것이 쉬워진다.
(인덱스 찾기 추가할 배열 자르고 붙이는 과정 필요 없음)
apply() 대체
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// expected output: 6
console.log(sum.apply(null, numbers));
// expected output: 6
배열의 엘리먼트를 함수의 파라미터로 전달할 때 apply()함수를 사용해왔지만 ES6에서 펼침연산자를 사용하게 되면
파라미터값을 직관적이고 쉽게 전달할 수 있다.
Array.from
console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]
Array.from메서드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만들어 리턴해준다.
map에서 배열 만들기
const m = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(m);
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
// ['a', 'b'];
Array.from(mapper.keys());
// ['1', '2'];
'웹 > JavaScript' 카테고리의 다른 글
ES6 Destructuring 구조 분해 할당 (0) | 2021.01.07 |
---|---|
object type 객체란? (0) | 2021.01.06 |
ES6 이터레이터(iterator) for of, for in 차이점 (0) | 2021.01.03 |
es6에서 추가된 string 메소드들 (0) | 2021.01.02 |
헷갈리는 var, let 차이. 쉽게 한 줄 요약 (0) | 2021.01.01 |
댓글