ES6 학습 - Set & WeakSet
'use strict'
var map = new Map();
var set = new Set();
alert(' map set')
alert 가 나 오 면 지원 을 설명 합 니 다.
콘 셉 트
set - 새로운 데이터 구 조 는 배열 과 유사 하지만 구성원 의 값 은 유일 하고 중복 되 지 않 습 니 다.set 자 체 는 set 데이터 구 조 를 만 드 는 구조 함수 입 니 다.
add 를 통 해 set 구조 에 구성원 을 추가 하면 set 구조 에 중복 되 는 값 을 추가 하지 않 음 을 알 수 있 습 니 다. (여기 add 는 set 구조의 방법 입 니 다)
var s = new Set();
[2,3,5,2,6,3,5].map(x => s.add(x));
for(i of s){console.log(i);} // 2 3 5 6
set 함 수 는 하나의 배열 이나 클래스 배열 대상 을 매개 변수 로 받 아들 여 초기 화 에 사용 합 니 다.
var set = new Set([1,2,3]);
console.log([...set]); // [1, 2, 3]
console.log(set.size); // 3
console.log(set); // Set(3) {1, 2, 3}
Set 에 값 을 추가 할 때 형식 변환 이 일어나 지 않 습 니 다.set 내부 에서 두 값 이 같은 지 판단 하 는 알고리즘 은 = = 과 유사 하 다. 즉, 두 대상 은 항상 같 지 않 고 유일한 예 외 는 NaN 이 자신 과 같다 는 것 이다.
var set = new Set();
set.add({});
console.log(set.size); // 1
set.add({});
console.log(set.size); // 2( , )
var a = new Set();
a.add(1);
console.log(a.size); // 1
a.add(1);
console.log(a.size); // 1( 1 , 1===1, set )
a.add(2);
console.log(a.size); // 2
2: Set 실례 의 속성
Set.prototype.constructor
: 구조 함수, 기본 값 은 Set 함수 입 니 다.Set.prototype.size
: Set 인 스 턴 스 의 구성원 총 수 를 되 돌려 줍 니 다.3. Set 인 스 턴 스 방법
add (value) - 값 추가, 세트 자 체 를 되 돌려 줍 니 다.
delete (value) - 값 을 삭제 하고 불 값 을 되 돌려 줍 니 다.
has (vaalue) - 값 이 있 는 지, 불 값 을 되 돌려 줍 니 다.
clear () - 모든 구성원 을 지 웁 니 다. 반환 값 이 없습니다.
var set = new Set();
set.add(1);
console.log(set.size); // 1
console.log([...set]); // [1]
console.log(set); // Set(1) {1}
set.add(2).add(2);
console.log(set.size); // 2, 2
console.log(set.has(2)); // true
console.log(set.has(3)); // false
console.log(set.delete(1)); // true
console.log(set.has(1)); // false
작은 예
Array. from () 은 set 구 조 를 배열 로 바 꿀 수 있 습 니 다.
var items = new Set([1,2,4]);
console.log(items); // Set(3) {1, 2, 4}
var array = Array.from(items)
console.log(array); // [1,2,4]
용도: 배열 제거
var items = new Set([1,2,4,3,2,1]);
console.log(items); // Set(3) {1, 2, 4, 3}
var array = Array.from(items)
console.log(array); // [1,2,4,3]
function dedupe(array){
return Array.from(new Set(array))
}
console.log(dedupe([1,4,2,4,1,3,5])); // [1, 4, 2, 3, 5]
다섯: 옮 겨 다 니 기 동작
네 가지 옮 겨 다 니 는 방법 은 Set 구조 구성원 을 옮 겨 다 니 는 데 사용 된다.
1. keys (): 키 의 이동
2. values (): 값 의 이동
3. entries (): 키 가 맞 는 옮 겨 다 니 기
4. foreach (): 리 셋 함 수 를 사용 하여 각 멤버 를 옮 겨 다 니 기
앞의 세 사람 이 돌아 오 는 것 은 모두 옮 겨 다 니 는 대상 이 고 key 와 value 는 하나의 값 이기 때문에 앞의 두 사람 이 돌아 오 는 값 은 똑 같 습 니 다.
let set = new Set([1,2,4,6,3]);
console.log(set.keys()); // SetIterator {1, 2, 4, 6, 3}
for(let items of set.keys()){
console.log(items); // 1 2 4 6 3
}
console.log(set.values()); // SetIterator {1, 2, 4, 6, 3}
console.log(set.entries()); // SetIterator {[1, 1], [2, 2], [4, 4], [6, 6], [3, 3]}
// entries ,
set 구조의 인 스 턴 스 는 기본적으로 옮 겨 다 닐 수 있 습 니 다. 기본 옮 겨 다 니 기 생 성 함수 가 바로 values 방법 입 니 다.
values 방법 을 생략 하고 for of 방법 으로 set 를 직접 옮 겨 다 닐 수 있 습 니 다. (둘 은 같은 옮 겨 다 니 는 결 과 를 얻 었 습 니 다)
let set = new Set([1,2,4,6,3]);
for(x of set){
console.log(x); // 1 2 4 6 3
}
확장 연산 자 내 부 는 for of 순환 을 사용 하기 때문에 set 구조 에 도 사용 할 수 있 습 니 다.
let set = new Set([2,5,12,3,2,3]);
let arr = [...set]
console.log(arr); // [2, 5, 12, 3],
배열 의 map 와 filter 방법 도 set 방법 (p154) 에 사용 할 수 있 습 니 다.
Weak Set - 중복 되 지 않 는 집합 이기 도 합 니 다.
WeakSet 과 Set 의 차이
1. WeakSet 의 멤버 는 대상 일 뿐 다른 유형의 값 이 아 닙 니 다.
2. WeakSet 의 대상 은 모두 약 한 인용 입 니 다.쓰레기 수 거 메커니즘 은 위 크 셋 이 대상 에 대한 인용 을 고려 하지 않 는 다 는 것 이다.다른 대상 이 이 대상 을 인용 하지 않 으 면 쓰레기 회수 체 제 는 이 대상 이 사용 하 는 메모 리 를 자동 으로 회수 하고 이 대상 이 weakset 에 존재 하 는 것 을 고려 하지 않 는 다 는 것 이다.이 특징 은 WeakSet 의 멤버 를 인용 할 수 없다 는 것 을 의미한다.따라서 Weak Set 는 옮 겨 다 닐 수 없다.
var ws = new WeakSet(); // WeakSet , new WeakSet
ws.add(1); // error
ws.add(Symbol()); // error
var obj = {};
ws.add(obj); //
위 예 설명: WeakSet 은 대상 형식의 구성원 만 추가 할 수 있 습 니 다.
Weak Set
(실제 iterable 인 터 페 이 스 를 갖 춘 대상 은 Weak Set 의 매개 변수 로 사용 할 수 있 습 니 다) 이 배열 의 모든 구성원 은 자동 으로 Weak Set 인 스 턴 스 대상 의 구성원 이 됩 니 다.var a = [[1,2],[3,4]];
var ws = new WeakSet(a);
console.log(ws); // WeakSet {[3, 4], [1, 2]}
console.log(ws.size); // undefined, size ,
여기: size 속성 이 없어 서 옮 겨 다 닐 수 없습니다. 멤버 들 이 약 한 인용 이기 때문에 언제든지 사라 질 수 있 습 니 다. 옮 겨 다 니 는 체 제 는 멤버 의 존 재 를 보장 할 수 없습니다. 옮 겨 다 니 기 가 끝나 자마자 멤버 들 이 찾 지 못 할 수도 있 습 니 다.
WeakSet 의 용도: DOM 노드 를 저장 합 니 다. 이 노드 가 문서 에서 제거 되 었 을 때 메모리 유출 을 걱정 하지 않 아 도 됩 니 다.
세 가지 방법
1. WeakSet.prototype.add(value)
2. WeakSet.prototype.delete(value)
3. WeakSet.prototype.has(value)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.