데이터 구조 Set 과 WeakSet
2518 단어 ES6
const a = new Set([1,1,2,3,4,5,6]);
console.log([...a]); //[1,2,3,4,5,6], , 1
console.log(a.size); //6
위 와 같이 무 거 운 so easy.그 밖 에 Set 도 간단 하고 편리 한 방법 을 제공 하여 우 리 는 위의 변 수 를 계속 사용 합 니 다.
a.add(6); // , Set
console.log(a.size); //6,
a.add(7);
console.log(a.size); //7
a.delete(1); //true, ,
a.delete(1); //false, , , false
a.has(1); //false, , , false
a.has(2); //true, , true
a.clear(); // ,
console.log(a.size); //0
상기 네 가지 조작 방법 을 제외 하고 Set 에는 네 가지 옮 겨 다 니 는 방법 이 있 지만 Set 구조 에 키 이름 이 없고 키 값 만 있 기 때문에 다음 과 같은 상황 이 발생 했 습 니 다.
let b = new Set(['a','b','c']);
for (let i of b.keys()){
console.log(i);
}
// a,keys()
// b
// c
for (let i of b.values()){
console.log(i);
}
// a,values()
// b
// c
for (let i of b){
console.log(i);
}
// a, values , for...of
// b
// c
for (let i of b.entries()){
console.log(i);
}
//['a','a'], ,
//['b','b']
//['c','c']
b.forEach((value,key) => console.log(key + ',' + value));
// a,a, ,
// b,b
// c,c
하 나 를 들 면 열 을 제거 하 는 데 편리 한 것 을 제외 하고 set 는 배열 간 의 교 집합, 집합 과 차 집합 처 리 를 신속하게 실현 할 수 있 고 시간 이 제한 되 어 있 으 며 여 기 는 코드 를 붙 이지 않 습 니 다.
2018 년 10 월 26 일 업데이트
오늘 의 업무 논리 에 서 는 두 배열 의 차 집 을 구 하 는 데 사용 되 었 으 므 로, 즉시 코드 를 보충 하여 모두 가 참고 하도록 제공 하 였 다.
let a=new Set([1,2,3]);
let b=new Set([2,3]);
let diff=new Set([...a].filter(x=>!b.has(x)));
Set 를 사용 하여 필요 한 작업 을 마 친 후 배열 작업 을 계속 하려 면 Set 를 다시 배열 로 변환 해 야 합 니 다.
Array.from(diff); //[1]
2020 년 3 월 29 일 업데이트
시간 이 너무 빨리 지나 서 눈 깜짝 할 사이 에 1 년 반 의 시간 이 또 지나 갔다.오늘 은 WeakSet 과 Set 의 차 이 를 보충 해 보 겠 습 니 다.WeakSet 는 Set 와 유사 하고 중복 되 지 않 는 값 의 집합 입 니 다. 다음 과 같은 몇 가지 차이 가 있 습 니 다.
1. Weak Set 의 구성원 은 대상 일 수 있 고 다른 데이터 형식 일 수 없 으 며 그렇지 않 으 면 잘못 보고 할 수 있 습 니 다.
2. Weak Set 의 구성원 들 은 모두 약 한 인용 으로 대상 의 다른 인용 이 삭제 되면 쓰레기 회수 체 제 는 해당 대상 이 사용 하 는 메모 리 를 방출 하여 메모리 누 출 을 피한다.
3. WeakSet 의 구성원 은 수시로 쓰레기 수 거 메커니즘 에 의 해 수 거 될 수 있 고 구성원 의 수량 이 불안정 하기 때문에 size 속성 이 없습니다.
4. clear () 방법 이 없습니다.
5. 옮 겨 다 닐 수 없다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(Javascript) ES6의 주요 특징 정리let을 사용하면 선언한 변수는 블록안에서만 유효하게 된다. const 역시 마찬가지로 블록스코프를 따른다 .const 와 let의 차이점은 const 는 상수로 값을 할당한다는 점이다. 따라서 값을 변경시키려고 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.