ES6 학습 의 길 (6) Set & WeakSet
16025 단어 ES6 학습
데이터 구조: 컴퓨터 에 데 이 터 를 저장 하고 조직 하 는 방식 은 데이터 의 집합체 라 고 할 수 있 는데 주로 데 이 터 를 편리 하 게 액세스 하기 위해 서 이다.
Set () 데이터 구조
1. 내부 구성원 의 값 은 모두 유일한 것 이 고 중복 되 지 않 는 다.2. set 자 체 는 하나의 구조 함수 로 set 데이터 구 조 를 생 성 하 는 데 사용 된다.3. set () 는 하나의 배열 이나 유사 한 배열 의 대상 을 매개 변수 로 받 아들 여 초기 화 할 수 있 습 니 다.4. set () 의 값 은 유형 전환 이 일어나 지 않 기 때문에 5 와 5 는 같 지 않 고 NaN 재 set 는 그 자체 와 같다.5. set 에서 두 대상 은 항상 같 지 않다.
const s = new Set();
[2,3,4,2,3,4,2,3].forEach(x=>s.add(x));
for(let i of s){
console.log(i);//2,3,4
}
//
set () 는 하나의 배열 이나 유사 한 배열 의 대상 을 매개 변수 로 받 아들 여 초기 화 할 수 있 습 니 다.
const set = new Set([1,2,3,4,4]);
console.log([...set]);//[1, 2, 3, 4]
const items = new Set([1,2,3,4,5,5,5,5]);
console.log(items.size);//5
function divs() {
return [...document.querySelectorAll('div')];
}
const sd = new Set(divs());
console.log(sd.size);//16
divs().forEach(div =>sd.add(div));
console.log(sd.size)//16
set () 의 값 은 형식 변환 이 일어나 지 않 기 때문에 5 와 5 는 같 지 않 고 NaN 재 set 는 그 자체 와 같 습 니 다.
let set = new Set();
let a=NaN;
let b=NaN;
set.add(a);
set.add(b);
console.log(set);// {NaN}
set 에서 두 대상 은 항상 같 지 않 습 니 다.
let se = new Set();
se.add({});
console.log(se.size);//1
se.add({});
console.log(se.size);//2
set 구조 실례 의 속성 과 방법
1. 속성 Set. prototype. constructor/set 구조 함수 Set. prototype. size/set 인 스 턴 스 를 되 돌려 주 는 구성원 의 총 갯 수 2, 방법 Set 인 스 턴 스 방법 은 두 가지 로 나 뉜 다. 조작 방법 (데 이 터 를 조작 하 는 데 사용) 과 옮 겨 다 니 는 방법 (구성원 을 옮 겨 다 니 는 데 사용) 이다.다음은 먼저 네 가지 조작 방법 을 소개 한다.
//add(value) ; , Set
let s = new Set();
s.add(1).add(2).add(2);
console.log(s.size);//2
//has(value); , Set ;
console.log(s.has(1));//true
console.log(s.has(2));//true
console.log(s.has(3));//false
//delete(value); , ,
console.log(s.delete(2));//true
console.log(s.has(2));//false
//clear(); ,
console.log(s.clear());
console.log(s.size);//0
//
function defupe(array){
return Array.from(new Set(array));
}
console.log(defupe([1,1,2,3]));//[1,2,3]
다음은 스 트 리밍 방법 keys (): 키 이름 을 되 돌려 주 는 스 트 리밍 기 values (): 키 값 을 되 돌려 주 는 스 트 리밍 기 entries (): 키 값 이 맞 는 스 트 리밍 기 foreach () 를 되 돌려 줍 니 다. 리 셋 함 수 를 사용 하여 모든 구성원 을 스 트 리밍 합 니 다.
set 옮 겨 다 니 는 순 서 는 삽입 순서 입 니 다. 호출 시 추가 순서에 따라 호출 할 수 있 습 니 다.
let set = new Set(['red','green','blue']);
//keys()
for(let item of set.keys()){
console.log(item);//red// green// blue
}
//values()
for(let item of set.values()){
console.log(item);//red// green// blue
}
//entries()
for(let item of set.entries()){
console.log(item);
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]
}
//set values() , values();
for(let item of set){
console.log(item);//red// green// blue
}
forEach () 순환
let set = new Set([1,2,3]);
set.forEach((value,key)=>console.log(value*2));//2,4,6
// for...of , set
let s1 = new Set(['red','green','blue']);
let arr1 = [...s1];
console.log(arr1);// ["red", "green", "blue"]
//
let arr2 = [1,1,2,2,3,3];
let s2 = [...new Set(arr2)];
console.log(s2);//[1,2,3];
Set () 실례 용법
//map() filter
let set = new Set([1,2,3]);
set = new Set([...set].map(x=>x*2));
console.log(set);// {2, 4, 6}
let s1 = new Set([1,2,3,4,5]);
s1 = new Set([...s1].filter(x=>(x%2)==0));
console.log(Array.from(s1));//[2, 4]
//set
let a = new Set([1,2,3]);
let b = new Set([4,3,2]);
let union = new Set([...a,...b]);
console.log(union);//{1, 2, 3, 4}
console.log( a instanceof Array)
let intersect = new Set([...a].filter(x=>b.has(x)));
console.log(intersect)//{2,3}
let difference = new Set([...a].filter(x=>!b.has(x)));
console.log(difference)//{1}
WeakSet
1. WeakSet 는 Set 구조 와 유사 하 다.2. 값 은 모두 유일한 것 이다.반복 하지 않 음;3. weatset 의 구성원 은 대상 일 뿐 다른 유형의 값 일 수 없습니다.
//
const ws = new WeakSet();
console.log(ws.add(1));
//Invalid value used in weak set
console.log(ws.add(Symbol()));
//Invalid value used in weak set
4. WeakSet 는 대상 을 임시로 저장 하고 대상 과 연 결 된 정 보 를 저장 하 는 데 적합 합 니 다.이 대상 들 이 외부 에서 사라 지면 WeakMap 에서 의 인용 은 자동 으로 사라 집 니 다.5. Weak Set 는 옮 겨 다 닐 수 없습니다.6. WeakSet 는 하나의 배열 이나 유사 한 배열 의 대상 을 매개 변수 로 받 아들 일 수 있 습 니 다.이 배열 의 모든 구성원 은 자동 으로 WeakSet 인 스 턴 스 대상 의 구성원 이 됩 니 다.
//a
const a = [[1,2],[3,4]];
const ws = new WeakSet(a);
console.log(ws);//WeakSet {(2) [3, 4], (2) [1, 2]}
//
const b =[3,4];
const wsb = new WeakSet(b);
console.log(wsb);// Invalid value used in weak set
weakSet 방법
WeakSet. prototype. add (value): WeakSet 인 스 턴 스 에 새 멤버 를 추가 합 니 다.WeakSet. prototype. delete (value): WeakSet 인 스 턴 스 의 지정 한 구성원 을 삭제 합 니 다.Weak Set. prototype. has (value): 하나의 불 값 을 되 돌려 줍 니 다. 어떤 값 이 Weak Set 인 스 턴 스 에 있 는 지 여 부 를 표시 합 니 다.
const ws = new WeakSet();
const obj = {};
const foo = {};
ws.add(window);
ws.add(obj);
console.log(ws.has(window));//true
console.log(ws.has(obj));//true
ws.delete(window);
console.log(ws.has(window))//false
//WeakSet, size ,
const ws = new WeakSet();
console.log(ws.size);//undefined
console.log(ws.fotEach);//undefined
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[필기] ECMAScript 6 입문의 대표적인 예(3)4장 문자열 확장 위 코드는 두 번째 매개 변수n를 사용할 때endsWith의 행위가 다른 두 가지 방법과 다르다는 것을 나타낸다.이것은 앞의 n 문자에 대한 것이고, 다른 두 가지 방법은 문자열이 끝날 때까지 n ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.