ES6 에 서 는 Set 과 WeakSet 를 어떻게 사용 합 니까?
1. Set 사용
(1) Set 자체 가 구조 함 수 를 제공 하여 Set 데이터 구 조 를 생 성 합 니 다.
var s = new Set();
[2,2,2,5,8,16,2,1].map(x => s.add(x))
for(i of s){console.log(i)}
//2,5,8,16,1
(2) Set () 함 수 는 하나의 배열 을 받 아들 여 구조 적 매개 변수 로 초기 화 에 사용 할 수 있 습 니 다.
var s = new Set([1,2,3,4,2,4,3]);
[...s]
//[1,2,3,4]
메모: Set 에 값 을 넣 을 때 유형 전환 이 일어나 지 않 기 때문에 5 와 5 는 두 개의 서로 다른 값 입 니 다. Set 내부 에서 두 개의 값 이 같 는 지 판단 하고 = = = 을 사용 합 니 다. 이 는 두 대상 이 항상 같 지 않다 는 것 을 의미 합 니 다.유일한 열 외 는 NaN 자체 입 니 다.
let set = new Set();
set.add({})
set.size//1
set.add({})
set.size//2
위의 코드 는 이 두 빈 대상 이 정확하게 같 지 않 기 때문에 두 개의 서로 다른 값 임 을 나타 낸다.
(3) Set 의 방법 과 속성
(3.1) Set 의 속성
Set. prototype. size: Set 인 스 턴 스 의 구성원 수 를 되 돌려 줍 니 다.set. prototype. constructor: 기본 구조 set 함수 입 니 다.
(3.2) Set 의 조작 아 함수
add (value): 어떤 값 을 추가 하고 Set 구조 자 체 를 되 돌려 줍 니 다.delete (value): 어떤 값 을 삭제 하고 불 값 을 되 돌려 삭제 에 성 공 했 음 을 표시 합 니 다.has (value): 매개 변수 가 set 의 구성원 인지 여 부 를 나타 내 는 불 값 을 되 돌려 줍 니 다.clear (): 모든 구성원 을 삭제 하고 값 을 되 돌려 주지 않 았 습 니 다.
var set = new Set(); set.add(1).add(2).add(22).add(22); set.size//3
set.hae(22)//true set.has(4)//false set.delete(2)//true
(3.3) 옮 겨 다 니 기 동작 설정
Set 는 네 가지 옮 겨 다 니 는 방법 이 있 습 니 다.멤버 를 옮 겨 다 니 는 데 사용 할 수 있 습 니 다.keys (): 키 이름 을 되 돌려 주 는 스 트 리밍 기 values (): 값 을 되 돌려 주 는 스 트 리밍 기 entries (): 키 값 이 맞 는 스 트 리밍 기 foreach () 를 되 돌려 줍 니 다. 스 트 리밍 함 수 를 사용 하여 모든 구성원 을 옮 겨 다 닙 니 다.
메모: set 에 키 이름 이 없 기 때문에 값 이름 만 있 습 니 다. keys () 와 values () 가 돌아 온 결 과 는 같 습 니 다.
let set = new Set(['red','green','blue']);
for(let item of set.keys()){
console.log(item);
}
//red,green,blue
for(let item of set.values()){
console.log(item);
}
//red,green,blue
for(let item of set.entries()){
console.log(item);
}
//["red","red"]
//["green","green"]
//["blue","blue"]
// ,entries , 。 。
메모: Set 기본 옮 겨 다 닐 수 있 습 니 다. 기본 옮 겨 다 니 기 생 성 함수 가 values 방법 입 니 다.이것 은 values 방법 을 생략 하고 for... of 로 옮 겨 다 닐 수 있다 는 것 을 의미한다.
var set = new Set([1,2,3,4]);
for(let x of set){
console.log(x);
}
//1
//2
//3
//4
확장 연산 자 (...) 내부 에 for... of 순환 을 사용 하면 set 구조 에 도 사용 할 수 있 습 니 다.
let set = new Set(['red','green','blue']);
let arr = [...set];
//['red','green','blue'];
(3.4) 집합, 교 집합, 차 집합 실현
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]);
//[1,2,3,4,5,6,7,8,9]
//
let intersect = new Set([...set1].filter(x => b.has(s)));
//[4,5,6]
//
let intersect = new Set([...set1].filter(x => !b.has(s)));
//[1,2,3,4]
(3.5) set 는 foreach 의 사용 을 실현 합 니 다.
let set = new Set([1,2,3,4,5,6]);
set.forEach(value,key)=>consloe.log(vlaue+1);
//2
//3
//4
//5
//6
//7
메모: foreach 방법의 매개 변 수 는 처리 함수 입 니 다. 이 함 수 는 순서대로 (키 값, 키 이름) 집합 자체 입 니 다.또한, foreach 방법 은 두 번 째 매개 변 수 를 가지 고 있 으 며, this 를 연결 하 는 대상 을 표시 합 니 다.
2. WeakSet 사용
WeakSet 는 Set 와 유사 하 며 중복 되 지 않 는 값 의 집합 입 니 다.하지만 저장 대상 에 만 사용 할 수 있다.다른 유형의 값 이 아 닙 니 다.Weak Set 은 하나의 구조 함수 이다.배열 과 유사 한 배열 의 대상 을 매개 변수 로 받 아들 일 수 있 습 니 다.(실제로 iterable 인터페이스 의 대상 은 WeakSet 의 매개 변수 로 사용 할 수 있 습 니 다).이 배열 의 모든 구성원 은 자동 으로 Weak Set 의 인 스 턴 스 대상 이 됩 니 다.var a = new [[1,2],[3,4]]; var ws = new WeakSet(a);
var ws = new WeakSet();
ws.add(1);//TypeError:Invalid value used in weak set
ws.add(Symbol);//TypeError:Invalid value used in weak set
하나의 수치 와 하나의 Symbol 을 추가 하면 결 과 는 동시에 오 류 를 보고 합 니 다.
Weak Set 구 조 는 다음 과 같은 방법 이 있 습 니 다. Weak Set. protoptype. add (value): Weak Set 인 스 턴 스 에 새 멤버 를 추가 합 니 다.WeakSet. protoptype. delete (value): WeakSet 인 스 턴 스 지정 멤버 를 삭제 합 니 다.WeakSet. protoptype. has (value): 하나의 불 값 을 되 돌려 줍 니 다. 어떤 값 이 WeakSet 인 스 턴 스 에 있 는 지 여 부 를 표시 합 니 다.
var ws = new WeakSet();
var obj = {};
var foo = {};
ws.add(window);
ws.add(obj);
ws.has(window);//true
ws.has(foo);false
ws.delete(window);//true
ws.has(window);//false
Weak Set 을 옮 겨 다 닐 수 없 는 이 유 는 멤버 들 이 약 한 인용 이기 때문에 언제든지 사라 질 수 있 고 옮 겨 다 니 며 멤버 들 의 존 재 를 보장 할 수 없 기 때 문 입 니 다.방금 옮 겨 다 니 기 가 끝 났 는 지 멤버 들 은 찾 을 수 없 었 다.WeakSet 의 한 용 도 는 DOM 노드 를 저장 하 는 것 입 니 다. 이 노드 들 이 문서 에서 제거 할 때 메모리 유출 을 걱정 하지 않 아 도 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.