ES6 새로운 데이터 구조 Set 과 WeakSet 용법 분석

2551 단어
본 고 는 ES6 의 새로운 데이터 구조 Set 과 WeakSet 의 용법 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다. 구체 적 으로 는 다음 과 같 습 니 다.
새로운 데이터 구조 Set 과 WeakSet
1. Set
set 는 데이터 와 유사 하지만 구성원 값 은 유일 합 니 다.Set 를 만 드 는 방법 은 다음 과 같 습 니 다.

var s = new Set();
[1,1,3,3,5,5].map( x => s.add(x) );
console.log(s); //Set {1, 3, 5}


중복 값 이 없습니다. 면접 관 이 다시 배열 을 만들어 서 무 거 운 함 수 를 만 들 라 고 하면 훨씬 간단 하지 않 습 니까?아니면 이렇게 써 도 돼.

var set = new Set( [2,2,4,4,6,6] ); //Set {2, 4, 6}
console.log(set);


사실 set 를 구조 함수 로 사용 할 때 받 아들 이 는 매개 변 수 는 배열 뿐만 아니 라 모든 배열 의 대상 도 가능 합 니 다.Set 의 구성원 은 대상 일 수 있 지만 대상 마다 유일 하 다.
그렇다면 우 리 는 어떻게 Set 를 조종 할 것 인가?

s.add(val); // s  val,  s
s.delete(val); //  val,            
s.has(val); //    s      val    
s.clear(); //      

map 와 filter 방법 은 배열 에 작용 할 수도 있 고 set 에 도 사용 할 수 있 습 니 다. (첫 번 째 코드 블록 참조)
그렇다면 우 리 는 어떻게 Set 를 옮 겨 다 닐 까?
여전히 keys (), values (), entries (), foreach () 입 니 다. 예 를 들 어 다음 과 같 습 니 다 (기본 값 에서 Set 키 는 값 과 같 습 니 다).

var s = new Set();
var ul = document.getElementsByTagName('ul');
[1,1,3,3,5,5].map( x => s.add(x) );
for ( let key of s.keys() ){
  console.log(key); //1 , 3, 5
}
for ( let val of s.values() ){
  console.log(val); //1, 3,5
}
for ( let item of s.entries() ){
  console.log(item[0],item[1]); // 1 1 , 3 3, 5 5
}
for ( let [key,val] of s.entries() ){
  console.log(key,val); // 1 1 , 3 3, 5 5
}
s.forEach( function( val , key , ul ){
  console.log( this ); //ul
  console.log( val , key);
} , ul );


확장 연산 자 를 사용 하여 set 를 배열 로 변환 할 수 있 습 니 다.
2.WeakSet
WeakSet 은 Set 과 유사 하 며 중복 되 지 않 는 집합 이기 도 하 다.위 크 셋 의 멤버 는 대상 일 수 밖 에 없다 는 차이 가 있다.WeakSet 의 대상 은 약 한 인용 입 니 다. 즉, 쓰레기 회수 체 제 는 WeakSet 가 이 대상 에 대한 인용 을 고려 하지 않 습 니 다.다른 변수 가 대상 을 더 이상 인용 하지 않 으 면 이 대상 이 WeakSet 에 인용 되 더 라 도 쓰레기 회수 메커니즘 에 의 해 회 수 됩 니 다.WeakSet 의 구성원 은 인 용 될 수 없고 WeakSet 를 옮 겨 다 닐 수 없다 는 뜻 이다.WeakSet 은 add, delete, has 세 가지 방법 만 있 습 니 다.메모: WeakSet 에는 size 속성 도 없고 foreach 방법 도 없습니다.
Weak Set 이 옮 겨 다 닐 수 없 는 것 에 대해 서 는 이렇게 설명 할 수 있 습 니 다.멤버 들 이 약 한 인용 이기 때문에 언제든지 사라 질 수 있 고, 시스템 을 옮 겨 다 니 며 멤버 들 이 계속 존재 한 다 는 것 을 보장 할 수 없다.
그러면 Weak Set 는 무엇 을 하 는 지 물 어 볼 수 있 습 니 다. 대답 하고 DOM 노드 를 저장 하면 DOM 을 제거 할 때 메모리 누 출 을 걱정 하지 않 아 도 됩 니 다.
본 논문 에서 말 한 것 이 여러분 의 ECMAScript 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기