JavaScript에서 spread 연산자를 사용하는 10가지 방법

24504 단어 javascript
나는 네가 자바스크립트의spread 조작부호 (...) 를 들은 적이 있다고 믿는다.JavaScript에서 제공하는 가장 강력한 운영자 중 한 명으로, 아래 10개의 문제와 같은 많은 문제를 해결할 수 있습니다.
spread 연산자는 JavaScript에서 발생할 수 있는 여러 문제를 해결하는 데 사용됩니다.
본고에서, 당신은spread 조작부호를 사용하여 다음과 같은 조작을 어떻게 실행하는지 배울 것입니다.
기본 형식에서 확장 연산자는 세 개의 점처럼 보인다.
[...arr];
  • Copy an array
  • Combine arrays
  • Add an item to an array
  • Adding a property to an object
  • Use Math() functions
  • Spread array as function arguments
  • Pass unlimited arguments to a function
  • Converting a nodeList into an array
  • Destructuring an object
  • Exploding a string
  • 복제 배열


    우리는spread 연산자를 사용하여 그룹을 복제할 수 있지만, 이것은 여전히 하나shallow clone이다.
    만약 우리가 arr1라는 수조를 가지고 있다면, 우리는 이 arr2라는 수조를 복제하고 싶다.
    const arr1 = [1,2,3];
    const arr2 = [...arr1];
    console.log(arr2);
    // [ 1, 2, 3 ]
    
    따라서, 우리는 기본 그룹을 복제할 수 있으며, 다중 그룹이나 날짜나 함수를 가진 그룹에 적용되지 않는다는 것을 알아야 한다.

    Note: Read more about deep-cloning in JavaScript


    조합 배열


    두 개의 수조가 하나로 합쳐야 한다고 가정하면 이런 상황이 자주 발생하기 때문에 우리는 concat 방법을 사용할 수 있다.
    아래에서 보듯이,spread 조작부호는 단지 이 방법을 더욱 간단하게 할 뿐이다.
    const arr1 = [1,2,3];
    const arr2 = [4,5,6];
    const arr3 = [...arr1, ...arr2];
    console.log(arr3);
    // [ 1, 2, 3, 4, 5, 6 ]
    
    현재 이 두 진열(arr1,arr2)은 arr3로 통합되었다.
    너는 다른 안배를 통해 어느 것이 1위에 랭크되어야 하는지를 설명할 수 있다.
    const arr3 = [...arr2, ...arr1];
    console.log(arr3);
    [4, 5, 6, 1, 2, 3];
    
    이것은 그룹을 조합하는 좋은 방법으로 추가할 수 있는 수량은 무한하기 때문에 확장 연산자를 계속 추가할 수 있다.
    const output = [...arr1, ...arr2, ...arr3, ...arr4];
    

    그룹에 항목 추가하기


    만약 하나의 그룹이 있다면, 그 안에 하나 이상의 항목을 추가해야 합니다.
    너는 진열을 이용할 수 있다.버튼을 누르지만spread 조작부호도 정상적으로 작동할 수 있습니다.
    let arr1 = ['this', 'is', 'an'];
    arr1 = [...arr1, 'array'];
    console.log(arr1);
    // [ 'this', 'is', 'an', 'array' ]
    
    보시다시피 새 문자열을 기존 그룹의 끝에 추가합니다.
    너는 심지어 여러 문자열을 전달할 수 있다.
    arr1 = [...arr1, 'array', 'cool'];
    console.log(arr1);
    // [ 'this', 'is', 'an', 'array', 'cool' ]
    

    객체에 속성 추가


    사용자의 대상이 있다고 가정하지만,age 속성이 부족합니다.
    const user = {
      firstname: 'Chris',
      lastname: 'Bongers'
    };
    
    이 사용자 대상에 나이를 추가하려면spread 조작부호를 다시 사용할 수 있습니다.
    const output = {...user, age: 31};
    
    위에서 발생한 일은 사용자 대상을 확장하고 age 라는 새로운 속성을 추가하는 것입니다. 그 값은 31 입니다.
    전체 설정은 다음과 같습니다.
    const user = {
      firstname: 'Chris',
      lastname: 'Bongers'
    };
    const output = {...user, age: 31};
    console.log(output);
    // { firstname: 'Chris', lastname: 'Bongers', age: 31 }
    

    Math() 함수 사용


    만약 네가 숫자 그룹을 가지고 있다면, 가장 낮거나, 가장 높거나, 이 숫자들의 총계를 얻고 싶다.
    이것은 또 다른 spread 운영자에게 이채를 띠게 하는 좋은 선택이다.
    우리의 입력 그룹은 아래와 같다
    const arr1 = [1, -1, 0, 5, 3];
    
    가장 작은 숫자를 얻기 위해서, 우리는spread 연산자와 Math.min method 키를 사용할 수 있다.
    const arr1 = [1, -1, 0, 5, 3];
    const min = Math.min(...arr1);
    console.log(min);
    // -1
    
    이것은 출력 -1 을 출력합니다. 이것은 가장 낮은 숫자이기 때문에, 그룹에서 -1을 삭제하십시오. 가장 낮은 숫자가 0 되는 것을 보십시오.
    가장 큰 숫자를 얻기 위해서 우리는 Math.max 방법을 사용할 수 있다.
    const arr1 = [1, -1, 0, 5, 3];
    const max = Math.max(...arr1);
    console.log(max);
    // 5
    
    보시다시피 최대치는 5 되돌아갈 것입니다. 5 을 제거하면 되돌아갈 것입니다. 3만약 우리가 전파하지 않는다면 무슨 일이 일어날지 알고 싶다면:
    const arr1 = [1, -1, 0, 5, 3];
    const max = Math.max(arr1);
    console.log(max);
    // NaN
    
    JavaScript가 배열에서 최대값이 얼마인지 모르기 때문에 반환NaN됩니다.

    배열을 함수 매개 변수로 확장하기


    세 개의 매개 변수를 포함하는 함수가 있다고 가정해 보세요.
    const myFunc(x1, x2, x3) => {
        console.log(x1);
        console.log(x2);
        console.log(x3);
    }
    
    다음과 같은 방법으로 이 함수를 호출할 수 있습니다.
    myFunc(1, 2, 3);
    
    하지만 우리가 통과하고 싶은 그룹이 있다면 무슨 일이 일어날까.
    const arr1 = [1, 2, 3];
    
    현재 우리는spread 조작부호를 사용하여 이 수조를 우리의 함수로 확장할 수 있다.
    myFunc(...arr1);
    // 1
    // 2
    // 3
    
    보시다시피, 우리는 수조를 세 개의 단독 매개 변수로 확장하여 함수에 전달합니다.
    전체 통화는 다음과 같습니다.
    const myFunc = (x1, x2, x3) => {
      console.log(x1);
      console.log(x2);
      console.log(x3);
    };
    const arr1 = [1, 2, 3];
    myFunc(...arr1);
    // 1
    // 2
    // 3
    

    함수에 무한 매개 변수를 전달하다


    무한 매개 변수를 받아들이는 함수가 있다면, 동적 순환을 원하는 속성일지도 모른다.
    const myFunc = (...args) => {
      console.log(args);
    };
    
    만약 우리가 지금 여러 개의 매개 변수로 이 함수를 호출한다면, 우리는 아래의 상황을 볼 수 있을 것이다.
    myFunc(1, 'a', new Date());
    
    다음과 같이 반환됩니다.
    [
      1,
      'a',
      Date {
        __proto__: Date {}
      }
    ]
    
    그리고 우리는 이 매개 변수를 동적으로 순환할 수 있다.

    노드 목록을 배열로 변환


    spread 조작부호를 사용하여 페이지의 모든div를 가져오면 됩니다.이것들은 nodeList의 형식으로 나타날 것이다.
    그리고 우리는spread 연산자를 이용하여 그것nodeList을 수조로 변환할 수 있다.
    const el = [...document.querySelectorAll('div')];
    console.log(el);
    // (3) [div, div, div]
    
    여기서 우리가dom에서 세 개의div를 얻은 것을 볼 수 있다.
    우리는 현재 이 요소들이 수조 형식이기 때문에 쉽게 순환할 수 있다.
    const el = [...document.querySelectorAll('div')];
    el.forEach(item => {
      console.log(item);
    });
    // <div></div>
    // <div></div>
    // <div></div>
    

    Note: If you want to learn more about looping over nodeList results check out this article.



    분해 대상


    분해 대상에 익숙하면spread 조작부호가 매우 유용하다는 것을 알 수 있습니다.
    만약 우리가 또 사용자를 위해 대상을 만들었다면.
    const user = {
      firstname: 'Chris',
      lastname: 'Bongers',
      age: 31
    };
    
    우리는 현재spread 연산자를 사용하여 그것을 단일 변수로 분해할 수 있다.
    const {firstname, ...rest} = user;
    console.log(firstname);
    console.log(rest);
    // 'Chris'
    // { lastname: 'Bongers', age: 31 }
    
    보시다시피 사용자 대상을 분석하고firstname을firstname 변수로 분해하며 대상의 나머지 부분을rest 변수로 분해합니다.

    폭발 로프


    spread 조작부호의 마지막 용례는 문자열을 분해하는 것입니다.
    다음 문자열이 있다고 가정하십시오.
    const str = 'Hello';
    
    만약 우리가 이 문자열에 확장 연산자를 사용한다면, 우리는 알파벳 그룹을 얻을 것이다.
    const str = 'Hello';
    const arr = [...str];
    console.log(arr);
    // [ 'H', 'e', 'l', 'l', 'o' ]
    
    자, 알파벳 한 조.

    나는 또한 내가 이 글을 쓰는 과정을 생중계했다. 너는 유튜브에서 이 녹음을 볼 수 있다.

    읽어주셔서 감사합니다. 연결해 드리겠습니다.


    제 블로그를 읽어주셔서 감사합니다.내 이메일 시사 통신을 구독하고 Facebook 또는

    좋은 웹페이지 즐겨찾기