JavaScript

Spread operator (스프레드 연산자)

ToKor 2020. 12. 17. 04:32

... : spread를 통합 배열 연산진행

var arr = [3,4];

...arr   //  3 4   단독으로 이렇게 쓰이지는 않는다

var tar = [1,2,...arr,5,6]   //  [1,2,3,4,5,6]

var arr2 = [...arr];   //  [3,4]

var arrObj = [10, {a: "bc", b: "cd", c: {d: "de", e: "fg"}, h: ["A", "BC","DEF"]},20];
var arrObj2 = [...arrObj];   //  [10, {a: "bc", b: "cd", c: {d: "de", e: "fg"}, h: ["A", "BC","DEF"]},20]

var arr1 = [1,2,3];
var arr2 = [4,5,6];
var arr = [...arr1, ...arr2];   //  [1,2,3,4,5,6]
[...arr1,...arr2] === arr1.concat(arr2)   // concat에서의 사용과 같다

/* Math에서 사용 */
Math.max(1,5,3,2)   //  5
var arr = [1,5,3,2];
Math.max(arr)   //  NaN  넘버가 아닌 객체가 들어옴
Math.max(...arr)   //  5

var num = 237134;  // number 중 각각에서 가장 큰값
var max = Math.max(...num.toString().split(""));   // 7

/* string을 array로 변환시 */
var str = "world";
var chars = [...str];   // ["w","o","r","l","d"]

/* Array를 string으로 변환시 */
var arr = ["ab","cd","ef","gh"];   //  ab,cd,ef,gh
var str = arr.join("");   //  abcdefgh

/* Object copy, Deep Copy */
var obj = {name: "john", age: 20, school: "seneca"};
var obj2 = {...obj};   //  {name: "john", age: 20, school: "seneca"}
var obj.name = "tom";   // obj2.name === "john"  변함없음