set 와 map 의 차 이 는 무엇 입 니까?

4675 단어 javascript 전단
set 와 map 주요 응용 장면:
set --- > 데이터 재 구성 set 는 집합 이라는 데이터 구조 이다.Map --- > 데이터 저장 Map 은 사전 이라는 데이터 구조 이다.
집합 과 사전 의 차이:
공통점: 집합, 사전 은 중복 되 지 않 는 값 의 차이 점 을 저장 할 수 있 습 니 다. 집합 은 [value, value] 의 형식 으로 요 소 를 저장 하고 사전 은 [key, value] 의 형식 으로 저장 합 니 다.
집합 (세트):
ES6 에 추 가 된 새로운 데이터 구 조 는 배열 과 유사 하 며 구성원 이 유일 하 다 (내부 요소 가 중복 되 지 않 은 값).또한 키 를 사용 하여 데이터 정렬 을 순서대로 저장 합 니 다.
set 자 체 는 set 데이터 구 조 를 만 드 는 구조 함수 입 니 다.
set 대상 은 원본 값 이나 대상 참조 에 관 계 없 이 모든 종류의 유일한 값 을 저장 할 수 있 습 니 다.
 :
const s = new Set()
[1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x))
for (let i of s) {
    console.log(i)    // 1 2 3 4
}
//          
let arr = [1, 2, 3, 2, 1, 1]
[... new Set(arr)]    // [1, 2, 3]

메모: Set 에 값 을 추가 할 때 유형 전환 이 일어나 지 않 기 때문에 5 와 5 는 서로 다른 값 입 니 다.Set 내부 에서 두 값 이 다른 지 여 부 를 판단 할 때 사용 하 는 알고리즘 을 'Same - value - zero equality' 라 고 하 는데 이것 은 정확 한 연산 자 (= = = =) 와 유사 하 며 주요 한 차이 점 은 NaN 이 자신 과 같 지 않 고 정확 한 연산 자 는 NaN 이 자신 과 같 지 않다 고 여 긴 다.
 :
let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set {NaN}

let set1 = new Set()
set1.add(5)
set1.add('5')
console.log([...set1])    // [5, "5"]

조작 방법:
  • add (value): 새로 추 가 됩 니 다. array 의 push 에 해당 합 니 다.
  • delete (value): 존재 하면 집합 중의 value 를 삭제 합 니 다.
  • has (value): 집합 에 value 가 존재 하 는 지 판단 합 니 다.
  • clear (): 집합 비우 기.
  • 편리 한 방법: 옮 겨 다 니 는 방법 (옮 겨 다 니 는 순 서 는 삽입 순서)
  • keys (): 집합 에 있 는 모든 키 를 포함 하 는 교체 기 를 되 돌려 줍 니 다.
  • values (): 집합 을 포함 하 는 모든 교체 기 를 되 돌려 줍 니 다.
  • entries (): Set 대상 을 포함 하 는 모든 요소 의 키 값 교체 기 를 되 돌려 줍 니 다.
  • foreach (callbackFn, thisArg): 집합 구성원 에 게 callbackFn 작업 을 수행 하 는 데 사 용 됩 니 다. thisArg 인 자 를 제공 하면 리 셋 중인 this 는 이 인자 이 고 반환 값 이 없습니다.

  • WeakSet: WeakSet 대상 은 약 한 인용 대상 을 집합 에 저장 할 수 있 습 니 다.
    WeakSet 과 Set 의 차이 점:
  • WeakSet 은 대상 인용 만 저장 할 수 있 고 값 은 저장 할 수 없 으 며 Set 대상 은 모두 가능 하 다.
  • WeakSet 대상 에 저 장 된 대상 값 은 모두 약 하 게 인 용 됩 니 다. 즉, 쓰레기 회수 체 제 는 WeakSet 이 대상 에 대한 응용 을 고려 하지 않 고 다른 변수 나 속성 이 이 대상 값 을 인용 하지 않 으 면 이 대상 은 쓰레기 로 회수 되 기 때문에 WeakSet 대상 에 몇 개의 구성원 요소 가 있 는 지 고려 하지 않 습 니 다.쓰레기 수 거 메커니즘 이 작 동 하 느 냐 안 하 느 냐 에 따라 운영 전후 구성원 의 개수 가 일치 하지 않 을 수 있 습 니 다. 옮 겨 다 니 기 가 끝 난 후에 어떤 구성원 은 찾 지 못 할 수도 있 습 니 다 (쓰레기 수 거 되 었 습 니 다). WeakSet 대상 은 옮 겨 다 닐 수 없습니다 (ES6 규정 WeakSet 는 옮 겨 다 닐 수 없습니다). 그 에 포 함 된 모든 요 소 를 가 져 갈 수도 없습니다.

  • 방법:
  • add (value): WeakSet 대상 에 요소 value 를 추가 합 니 다.
  • has (value): WeakSet 대상 에 value 가 포함 되 어 있 는 지 판단 합 니 다.
  • delete (value): 요소 value 를 삭제 합 니 다.

  • 사전 (지도):
    키 가 맞 는 구조 로 빠 른 검색 속 도 를 가지 고 있 습 니 다.
     :
    const m = new Map()
    const o = {p: 'haha'}
    m.set(o, 'content')
    m.get(o)    // content
    
    m.has(o)    // true
    m.delete(o)    // true
    m.has(o)    // false

    조작 방법:
  • set (key, value): 사전 에 새 요 소 를 추가 합 니 다.
  • get (key): 키 를 통 해 특정한 수 치 를 찾 아 되 돌려 줍 니 다.
  • has (key): 사전 에 키 키 가 있 는 지 판단 합 니 다.
  • delete (key): 키 키 를 통 해 사전 에서 해당 하 는 데 이 터 를 제거 합 니 다.
  • clear (): 이 사전 의 모든 요 소 를 삭제 합 니 다.

  • 반복 방법:
  • Keys (): 사전 에 포 함 된 모든 키 이름 을 교체 기 형식 으로 되 돌려 줍 니 다.
  • values (): 사전 에 포 함 된 모든 수 치 를 교체 기 형식 으로 되 돌려 줍 니 다.
  • entries (): 모든 구성원 의 교체 기 를 되 돌려 줍 니 다.
  • foreach (): 사전 을 옮 겨 다 니 는 모든 구성원.

  • WeakMap: WeakMap 대상 은 키 값 이 맞 는 집합 입 니 다. 키 는 약 한 참조 대상 이 고 값 은 임 의 일 수 있 습 니 다. ,WeakMap , 。 。
    WeakMap 에서 모든 키 는 자신 이 인용 한 대상 에 대한 인용 이 약 합 니 다. 다른 인용 과 이 키 가 같은 대상 을 인용 하지 않 으 면 이 대상 은 쓰레기 로 회수 되 기 때문에 WeakMap 의 key 는 셀 수 없습니다.
    방법:
  • has (key): key 관련 대상 이 있 는 지 판단 합 니 다.
  • get (key): key 관련 대상 을 되 돌려 줍 니 다 (없 으 면 undefined 로 되 돌려 줍 니 다).
  • set (key): key 관련 대상 을 설정 합 니 다.
  • delete (key): key 의 관련 대상 을 제거 합 니 다.

  • 요약:
    Set:
  • 멤버 가 유일 하고 무질서 하 며 중복 되 지 않 는 다.
  • [value, value] 키 값 과 키 이름 이 일치 합 니 다 (또는 키 값 만 있 고 키 이름 이 없습니다).
  • 옮 겨 다 닐 수 있 습 니 다. 방법 은 add, delete, has 입 니 다.

  • WeakSet:
  • 멤버 들 은 모두 대상 이다.
  • 구성원 들 은 모두 약 한 인용 으로 쓰레기 회수 체제 에 의 해 회수 되 고 DOM 노드 를 저장 할 수 있 으 며 메모리 누 출 이 쉽 지 않다.
  • 옮 겨 다 닐 수 없습니다. 방법 은 add, delete, has 가 있 습 니 다.

  • Map:
  • 본질 적 으로 키 쌍 의 집합 으로 집합 과 유사 하 다.
  • 옮 겨 다 닐 수 있 고 여러 가지 데이터 형식 으로 전환 할 수 있 습 니 다.

  • WeakMap:
  • 대상 만 키 이름 (null 제외) 으로 받 아들 이 고 다른 유형의 값 은 키 이름 으로 받 아들 이지 않 습 니 다.
  • 키 이름 은 약 한 참조 입 니 다. 키 값 은 임 의 일 수 있 습 니 다. 키 이름 이 가리 키 는 대상 은 쓰레기 로 회수 할 수 있 습 니 다. 이 때 키 이름 은 유효 하지 않 습 니 다.
  • 옮 겨 다 닐 수 없습니다. 방법 은 get, set, has, delete 가 있 습 니 다.
  • 좋은 웹페이지 즐겨찾기