ES6 학습 의 길 (6) Set & WeakSet

16025 단어 ES6 학습
데이터 구조 가 무엇 입 니까?
데이터 구조: 컴퓨터 에 데 이 터 를 저장 하고 조직 하 는 방식 은 데이터 의 집합체 라 고 할 수 있 는데 주로 데 이 터 를 편리 하 게 액세스 하기 위해 서 이다.
Set () 데이터 구조
1. 내부 구성원 의 값 은 모두 유일한 것 이 고 중복 되 지 않 는 다.2. set 자 체 는 하나의 구조 함수 로 set 데이터 구 조 를 생 성 하 는 데 사용 된다.3. set () 는 하나의 배열 이나 유사 한 배열 의 대상 을 매개 변수 로 받 아들 여 초기 화 할 수 있 습 니 다.4. set () 의 값 은 유형 전환 이 일어나 지 않 기 때문에 5 와 5 는 같 지 않 고 NaN 재 set 는 그 자체 와 같다.5. set 에서 두 대상 은 항상 같 지 않다.
    const s = new Set();
    [2,3,4,2,3,4,2,3].forEach(x=>s.add(x));

    for(let i of s){
        console.log(i);//2,3,4
    }
    //     

set () 는 하나의 배열 이나 유사 한 배열 의 대상 을 매개 변수 로 받 아들 여 초기 화 할 수 있 습 니 다.
    const set = new Set([1,2,3,4,4]);
    console.log([...set]);//[1, 2, 3, 4]

    const items = new Set([1,2,3,4,5,5,5,5]);
    console.log(items.size);//5

    function divs() {
        return [...document.querySelectorAll('div')];
    }
    const sd = new Set(divs());
    console.log(sd.size);//16

    divs().forEach(div =>sd.add(div));
    console.log(sd.size)//16

set () 의 값 은 형식 변환 이 일어나 지 않 기 때문에 5 와 5 는 같 지 않 고 NaN 재 set 는 그 자체 와 같 습 니 다.
    let set = new Set();
    let a=NaN;
    let b=NaN;
    set.add(a);
    set.add(b);
    console.log(set);// {NaN}

set 에서 두 대상 은 항상 같 지 않 습 니 다.
    let se = new Set();
    se.add({});
    console.log(se.size);//1

    se.add({});
    console.log(se.size);//2

set 구조 실례 의 속성 과 방법
1. 속성 Set. prototype. constructor/set 구조 함수 Set. prototype. size/set 인 스 턴 스 를 되 돌려 주 는 구성원 의 총 갯 수 2, 방법 Set 인 스 턴 스 방법 은 두 가지 로 나 뉜 다. 조작 방법 (데 이 터 를 조작 하 는 데 사용) 과 옮 겨 다 니 는 방법 (구성원 을 옮 겨 다 니 는 데 사용) 이다.다음은 먼저 네 가지 조작 방법 을 소개 한다.
    //add(value) ;     ,  Set    
    let s = new Set();
    s.add(1).add(2).add(2);
    console.log(s.size);//2
    //has(value);       ,     Set  ;
    console.log(s.has(1));//true
    console.log(s.has(2));//true
    console.log(s.has(3));//false
    //delete(value);     ,       ,        
    console.log(s.delete(2));//true
    console.log(s.has(2));//false
    //clear();      ,     
    console.log(s.clear());
    console.log(s.size);//0
    //    
    function defupe(array){
        return Array.from(new Set(array));
    }
    console.log(defupe([1,1,2,3]));//[1,2,3]

다음은 스 트 리밍 방법 keys (): 키 이름 을 되 돌려 주 는 스 트 리밍 기 values (): 키 값 을 되 돌려 주 는 스 트 리밍 기 entries (): 키 값 이 맞 는 스 트 리밍 기 foreach () 를 되 돌려 줍 니 다. 리 셋 함 수 를 사용 하여 모든 구성원 을 스 트 리밍 합 니 다.
set 옮 겨 다 니 는 순 서 는 삽입 순서 입 니 다. 호출 시 추가 순서에 따라 호출 할 수 있 습 니 다.
    let set = new Set(['red','green','blue']);
    //keys()
    for(let item of set.keys()){
        console.log(item);//red// green// blue
    }
    //values()
    for(let item of set.values()){
        console.log(item);//red// green// blue
    }
    //entries()
    for(let item of set.entries()){
        console.log(item);
        // ["red", "red"]
        // ["green", "green"]
        // ["blue", "blue"]
    }
    //set           values()  ,      values();
    for(let item of set){
        console.log(item);//red// green// blue
    }

forEach () 순환
    let set = new Set([1,2,3]);
    set.forEach((value,key)=>console.log(value*2));//2,4,6

    //            for...of  ,       set  
    let s1 = new Set(['red','green','blue']);
    let arr1 = [...s1];
    console.log(arr1);// ["red", "green", "blue"]

    //       
    let arr2 = [1,1,2,2,3,3];
    let s2 = [...new Set(arr2)];
    console.log(s2);//[1,2,3];

Set () 실례 용법
    //map() filter    
    let set = new Set([1,2,3]);
    set = new Set([...set].map(x=>x*2));
    console.log(set);// {2, 4, 6}

    let s1 = new Set([1,2,3,4,5]);
    s1 = new Set([...s1].filter(x=>(x%2)==0));
    console.log(Array.from(s1));//[2, 4]
    //set           
    let a = new Set([1,2,3]);
    let b = new Set([4,3,2]);


    let union = new Set([...a,...b]);
    console.log(union);//{1, 2, 3, 4}
    console.log( a instanceof Array)

    let intersect = new Set([...a].filter(x=>b.has(x)));
    console.log(intersect)//{2,3}

    let difference = new Set([...a].filter(x=>!b.has(x)));
    console.log(difference)//{1}

WeakSet
1. WeakSet 는 Set 구조 와 유사 하 다.2. 값 은 모두 유일한 것 이다.반복 하지 않 음;3. weatset 의 구성원 은 대상 일 뿐 다른 유형의 값 일 수 없습니다.
    //      
    const ws = new  WeakSet();
    console.log(ws.add(1));
    //Invalid value used in weak set

    console.log(ws.add(Symbol()));
    //Invalid value used in weak set

4. WeakSet 는 대상 을 임시로 저장 하고 대상 과 연 결 된 정 보 를 저장 하 는 데 적합 합 니 다.이 대상 들 이 외부 에서 사라 지면 WeakMap 에서 의 인용 은 자동 으로 사라 집 니 다.5. Weak Set 는 옮 겨 다 닐 수 없습니다.6. WeakSet 는 하나의 배열 이나 유사 한 배열 의 대상 을 매개 변수 로 받 아들 일 수 있 습 니 다.이 배열 의 모든 구성원 은 자동 으로 WeakSet 인 스 턴 스 대상 의 구성원 이 됩 니 다.
    //a          
    const a = [[1,2],[3,4]];
    const ws = new WeakSet(a);
    console.log(ws);//WeakSet {(2) [3, 4], (2) [1, 2]}

    //       
    const b =[3,4];
    const wsb = new WeakSet(b);
    console.log(wsb);// Invalid value used in weak set

weakSet 방법
WeakSet. prototype. add (value): WeakSet 인 스 턴 스 에 새 멤버 를 추가 합 니 다.WeakSet. prototype. delete (value): WeakSet 인 스 턴 스 의 지정 한 구성원 을 삭제 합 니 다.Weak Set. prototype. has (value): 하나의 불 값 을 되 돌려 줍 니 다. 어떤 값 이 Weak Set 인 스 턴 스 에 있 는 지 여 부 를 표시 합 니 다.
    const ws = new WeakSet();
    const obj = {};
    const foo = {};

    ws.add(window);
    ws.add(obj);

    console.log(ws.has(window));//true
    console.log(ws.has(obj));//true

    ws.delete(window);
    console.log(ws.has(window))//false
    //WeakSet,  size  ,      
    const ws = new WeakSet();
    console.log(ws.size);//undefined
    console.log(ws.fotEach);//undefined

좋은 웹페이지 즐겨찾기