ES6 시작 set 및 맵, 구성 해제

4900 단어

1. 해체


해체부치는 ES6에서 내놓은 효율적이고 간결한 부치 방법이다
  • 수조해구
  •      let [,,third] = [1,2,3];
         console.log(third); //3
    
         let [first,...last] = [1,2,3];
         console.log(last); //[2,3]
    
  • 대상해체
  • //    
       let {name,sex} = {"name":"huangsen","sex":"nan"};
       console.log(name);
    

    2、Rest + Spread

  • rest
  •  function f(x, ...y) {
           console.log(x * y.length);
      }
     f(3, "hello","222","111"); 
    
  • spread
  •  function add(x,y,z) {
           console.log(x+y+z);
     }
     add(...[1,2,3]);//6
    

    3、Map + Set + WeakSet

    Set 대상은 중복되지 않는 값으로 중복된 값은 무시됩니다. 값 유형은 원시 유형과 인용 유형WeakSet일 수도 있고 중복되지 않는 값의 집합일 수도 있지만 대상을 저장하는 데만 사용할 수 있습니다.Set의 용법: set 데이터 유형의 원소는 유일해야 한다.중복된 요소를 추가하면 오류가 발생하지 않고 효과가 발생하지 않습니다.Map 구조는'값-값'의 대응을 제공하고 더욱 완선한Hash 구조 실현이다.만약 '키 값 쌍' 의 데이터 구조가 필요하다면 Map Object 더욱 적합하다.이것은 대상과 유사하고 키 값 쌍의 집합이지만, '키' 의 범위는 문자열에 국한되지 않으며, 각종 종류의 값 (대상 포함) 은 모두 키로 쓸 수 있다.
  • Set
  •       // :
          1.  add(value): , Set 。
          2.  delete(value): , , 。
          3.  has(value): , Set 。
          4.  clear(): , 
    
          let s = new Set();
          s.add("hello").add("goodbye").add("hello");
          console.log(s.size);//2
          console.log(s.has("hello"))  //true
    
    
  • set 스트리밍
  •         let s = new Set([1,2,3,4,5,6]);
            s.forEach((item)=>{
                 console.log(item)//1,2,3,4,5,6
            });
    
  • Map
  •    //   map 
       1.  map.size  
       2.  set ,get 
       3.  delete()  ; clear() 
            // Maps
            let m = new Map();
            m.set("hello", 42);
            m.set(s, 34);
            console.log(m.get(s)); //34
            console.log(m.get("hello"))  //42
    
    map의 기타 방법:http://www.cnblogs.com/dagaoxiaozheng/p/6605981.html
  • Weak Sets
  •        var ws = new WeakSet();
           ws.add({ data: 42 });
    

    4. WeakSet과 Set의 차이점:

  • WeakSet의 구성원은 대상일 뿐 다른 유형의 값일 수 없다
  • WeakSet의 대상은 모두 약한 인용이다. 즉, 쓰레기 회수 메커니즘은 이 대상에 대한 인용을 고려하지 않는다WeakSet. 즉, 다른 대상이 이 대상을 인용하지 않으면 쓰레기 회수 메커니즘은 이 대상이 차지하는 메모리를 자동으로 회수하고 이 대상이 아직 존재하는 것을 고려하지 않는다WeakSet에 있다.이 특징은 WeakSet의 구성원을 인용할 수 없기 때문에 WeakSet는 두루 돌아다닐 수 없다는 것을 의미한다.
  • WeakSetset가 지원하는 데이터 유형이 다르다.
  • WeakSet의 대상은 모두 인용한 경우이다.주소가 쓰레기로 회수되었는지 검사하지 않음;
  • 그의 속성은 size속성이 없고, clear방법이 없으면 두루 돌아다닐 수 없다.

  • 5、WeakMap의 사용법


    - weakMapmap의 차이점:
  • 전자가 받은 값은 대상만 가능
  • 그는 set속성이 없어 사용할 수 없음clear()
  • 두루 돌아다닐 수 없음;weakSetset의 차이와 같다.

  • 6. 맵의 사용법

  • map의 속성명은 임의의 데이터 형식이 될 수 있다.
  • map증가치,용set,획득치용get
  • 7. WeakMap과 WeakSet은 다음과 같은 몇 가지 제한을 제외하고 Map, Set과 거의 같은 행위를 완성하도록 설계되었다.

  • WeakMapnew、has、get、setdelete만 지원합니다.
  • WeakSetnew、has、adddelete만 지원합니다.
  • WeakSet의 값과 WeakMap의 키는 반드시 대상이어야 한다.
  • 이 두 가지 약한 집합은 모두 교체할 수 없습니다. 전문적으로 조회하거나 관심 있는 키를 주지 않으면 약한 집합 중의 항목을 얻을 수 없습니다.

  • 8. 두 집합의 교집합, 병집합, 차집합을 구한다

      let set1 = new Set([1, 2, 3, 4, 5, 6]);
      let set2 = new Set([4, 5, 6, 7, 8, 9]);
    
  • 병합
  •   // 
            let union = new Set([...set1, ...set2]);
            union.forEach((item)=>{
                console.log(item);//1,2,3,4,5,6,7,8,9
            });
    
  • 교차
  •    // 
            let intersect = new Set([...set1].filter(x => set2.has(x)));
            intersect.forEach((item)=>{
                console.log(' :'+item);//4,5,6
            });
    
  • 차집 , A,B , A B , A B( A B ), , A、B, {x∣x∈A, x∉B} A B
  •   // 
            let intersect1 = new Set([...set1].filter(x => !set2.has(x)));
            intersect1.forEach((item)=>{
                console.log(' :'+item);//1,2,3
            });
    

    9. 그룹 제거

  • Set + Array.from()수조제거
  •         let arr = [12,13,12,11,0];
            let arr1 = Array.from(new Set(arr));
            console.log(arr1);// :12,13,11,0
    
  • ... [확장 연산자] + Set수 그룹 무게 제거
  •         let arr = [12,13,12,11,0];
            let arr1 = [...new Set(arr)];
            console.log(arr1);
    

    좋은 웹페이지 즐겨찾기