ES6의 Set 사용 방법

4579 단어

구문


set 대상은 원시 값이든 대상 인용이든 모든 종류의 유일한 값을 저장할 수 있습니다.
new Set([iterable])
  • 매개 변수는 필요하지 않습니다. 교체 가능한 대상을 전달하면 그의 모든 요소가 새 Set에 추가됩니다. 이 매개 변수가 없으면 Set가 비어 있습니다
  • 새 Set 객체 반환
  • 약술


    set 대상은 값의 집합이고 원소는 한 번만 나타납니다. 즉, Set의 원소는 유일합니다.
  • 주의해야 할 것은 NaN은 Set에 의해 동일하다고 여겨지고 {}는 다르다고 여겨진다
    var set = new Set([{},{}])
    set  //{{},{}}
    set.size  // 2
    
    var set = new Set([NaN,NaN])
    set  //{NaN}
    set.size  // 1
    
  • set 대상과 그룹 사이의 변환

    var arr = [1,2,3,4,4];
    var set = new Set(arr) // set 
    set //{1,2,3,4}
    // 
    Array.from(set) //[1,2,3,4]
    // 
    [...set] //[1,2,3,4]
    

    set 및 문자열

    var str = 'siiva';
    new Set(str) //{'s','i','v','a'}
    

    Set.prototype.add() && Set.prototype.size


    mySet.add(value)
    Set.prototype.size가 Set 실례의 구성원 총수를 되돌려줍니다
  • 매개 변수value, 필요, Set 대상에 추가해야 하는 요소의 값
  • Set 객체 자체를 반환
        var mySet = new Set();
        mySet.add(1) // {1}
        mySet.add(2).add('2') //{1,2,'2'}   ,2 '2' set 
        mySet.size //3
    
  • Set.prototype.has()


    has 방법은value가set 대상에 존재하는지 여부를 판단하기 위해 브리 값을 되돌려줍니다
    mySet.has(value)
  • 매개 변수value가 필요합니다.
  • 반환값은 부울값입니다.
    var mySet = new Set();
    mySet.add('siva');
    
    mySet.has('siva') // true
    mySet.has('hello') // false
    

  • Set.prototype.delete()


    delete () 방법은 Set 대상에서 지정한 요소를 삭제할 수 있습니다.
    mySet.delete(value);
  • 매개 변수value, 삭제할 요소
  • 반환값은 부울값,true는 삭제 성공
    var mySet = new Set();
    mySet.add('siva');
    
    mySet.delete('hello')  //false
    mySet.delete('siva')  //true
    
    mySet.has('siva') //false
    mySet.size //0
    
  • Set.prototype.clear()


    Set 객체의 모든 요소 비우기
    mySet.clear()
    var mySet = new Set()
    mySet.add(1).add('1')
    
    mySet.size //2
    mySet.has('1') //true
    
    mySet.clear();
    
    mySet.size //0
    

    스트리퍼


    Set.prototype.키 (): 키 이름을 되돌려주는 플러그인 Set.prototype.values (): 키 값을 되돌려 주는 플러그인 Set.prototype.entries (): 키 값이 맞는 플러그인 셋을 되돌려줍니다.prototype.forEach(): 콜백 함수 반복
    var mySet = new Set(['s','i','v'])
    
    for(let i of mySet.keys()){
    console.log(i)
    }
    // s
    // i
    // v
    
    for(let i of mySet.values()){
    console.log(i)
    }
    
    // s
    // i
    // v
    
    for(let i of mySet.entries()){
    console.log(i)
    }
    // ['s','s']
    // ['i','i']
    // ['v','v']
    
    
    var otherSet = mySet.entries();
    otherSet.next().value // ['s','s']
    otherSet // {'i','v'}
    otherSet.next().value //['i','i']
    otherSet // {'v'}
    otherSet.next().value //['v','v']
    otherSet // {}
    mySet.entries(); // {"s", "i", "v"}
    

    Set.prototype.forEach()


    forEach 메서드는 컬렉션의 요소 순서에 따라 각 요소에 대해 제공된 콜백 함수를 한 번씩 실행합니다.
    mySet.forEach(callback[, thisArg])
    삭제된 요소는 실행되지 않지만,undefined,null는 실행됩니다
  • 매개 변수callback이 범람하는 모든 요소가 실행하는 함수
  • 콜백에는 세 개의 매개 변수가 있는데 첫 번째는 키 값이고 두 번째는 키 이름이며 세 번째는 set 대상
  • 이다.
  • thisArg 콜백을 실행할 때this의 지향
    function callback(value,key,set){
        console.log(value,key,set)
    }
    new Set(['siva','hello',undefined,null]).forEach(callback)
    // siva siva  {"siva", "hello", undefined, null}
    // hello hello  {"siva", "hello", undefined, null}
    // undefined undefined  {"siva", "hello", undefined, null}
    // null null {"siva", "hello", undefined, null}
    
  • Set의 사용 방법

    let arr1 = [1,2,3,4,5];
    let arr2 = [4,5,6,7,8];
    let a = new Set(arr1);
    let b= new Set(arr2)
    
  • 수조제거 & 병합
    new Set([...arr1,...arr2]) //{1,2,3,4,5,6,7,8}
    let arr3 = [...new Set([...arr1,...arr2])] //[1,2,3,4,5,6,7,8]
    
  • 교차
    let arr3 = new Set(arr1.filter(x=>b.has(x))) //{4,5}
    
  • 차집
    let arr3 = new Set(arr1.filter(x=>!b.has(x))) //{1,2,3}
    let arr4 = new Set(arr2.filter(x=>!a.has(x))) //{6,7,8}
    [...arr3,...arr4] //[1,2,3,6,7,8]
    
  • Weakset


    WeakSet 대상은 약한 대상을 하나의 집합에 저장할 수 있도록 합니다. 그 중의 모든 대상 값은 한 번만 나타날 수 있습니다.
    크기 속성이 없고 WeakSet 대상은 일일이 열거할 수 없습니다.대상만 저장할 수 있고 문자열, 숫자 등 데이터 형식을 넣을 수 없습니다
    방법은 WeakSet이 있습니다.prototype.add(value)/WeakSet.prototype.delete(value)/WeakSet.prototype.has(value)

    좋은 웹페이지 즐겨찾기