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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.