ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구조 분해 할당 (배열, 객체)
    Note 2020. 10. 27. 21:21

    배열

    기본적인 구조 분해 할당

    let arr = ["hello", "world", "core", "javascript"];
    let [first, second] = arr;
    
    first; // "hello"
    second; // "world"

     

    rest / spread 문법을 배열 분해 적용

    let arr = ["hello", "world", "core", "javascript"];
    let [start, ...rest] = arr;
    
    start; // "hello"
    rest; // ["world", "core", "javascript"]

     

    다음과 같은 문법은 사용할 수 없다. 할당하기 전 왼쪽에는, rest 문법 이후에 쉼표가 올 수 없다.

    let [first, ...middle, last] = array

     

    객체

    객체의 단축 문법

    const name = "댕댕이";
    const age = 5;
    
    const dog = {
      name,
      age,
      weigth: 6,
    };
    
    dog; // {name: "댕댕이", age: 5, weigth: 6}

     

    객체를 분해

    const dog = { name: "댕댕이", age: 5, weigth: 6 };
    
    const { name } = dog;
    
    name; // "댕댕이"

     

    rest / spread 문법을 객체 분해에 적용(1)

    const dog = { name: "댕댕이", age: 5, weigth: 6 };
    
    const { name, ...args } = dog;
    
    name; // "댕댕이"
    args; // {age: 5, weigth: 6}

     

    rest / spread 문법을 객체 분해에 적용(2)

    const dog = {
      name: "댕댕이",
      major: "경영학과",
      lesson: "마케팅론",
      grade: "A+",
    };
    
    function getSummary({ name, lesson: course, grade }) {
      return `${name}님은 ${grade}의 성적으로 ${course}을 수강하였습니다.`;
    }
    
    getSummary(dog); // "댕댕이님은 A+의 성적으로 마케팅론을 수강하였습니다."

     

    객체 덮어쓰기

    Spread 순서에 따라 값이 다르다.

     

    <1>

    const dog = {
      name: "댕댕이",
      major: "경영학과",
      lesson: "마케팅론",
      grade: "A+",
    };
    
    const changeDog = {
      ...dog,
      name: "야옹이",
      grade: "F",
    };
    
    changeDog; // {name: "야옹이", major: "경영학과", lesson: "마케팅론", grade: "F"}

     

    <2>

    const dog = {
      name: "댕댕이",
      major: "경영학과",
      lesson: "마케팅론",
      grade: "A+",
    };
    
    const changeDog = {
      name: "야옹이",
      grade: "F",
      ...dog,
    };
    
    changeDog; // {name: "댕댕이", grade: "A+", major: "경영학과", lesson: "마케팅론"}

    'Note' 카테고리의 다른 글

    Linked List  (0) 2020.10.27
    스택, 큐  (0) 2020.10.27
    this, 화살표  (0) 2020.10.27
    node.js와 관련 도구  (0) 2020.10.27
    재귀함수  (0) 2020.10.27

    댓글