ECMAScript6_javascript 스킬의 Set/WeakSet에 대한 자세한 설명

WBOY
풀어 주다: 2016-05-16 15:55:28
원래의
1192명이 탐색했습니다.

ES6에는 Java의 Set과 마찬가지로 중복 요소를 저장하지 않는 새로운 데이터 구조화 Set이 추가되었습니다. Set은 클래스로 구현되며 사용하기 전에 새로 설정되어야 합니다.

var s1 = new Set()
s1.add(1)
s1.add(2)
s1.add(3)
s1.add(1)
 
var s2 = new Set()
s2.add('a')
s2.add('a')
 
// 输出1,2, 3
for (var i of s1 ) {
  console.log(i)
}
// 输出a
for (var i of s2 ) {
  console.log(i)
}
로그인 후 복사

위의 요소를 추가하려면 Set의 add 메소드를 사용하세요.

Set 생성자는 배열을 매개변수로 허용할 수도 있습니다

var s3 = new Set([1,2,3,1])
s3.size // 3
로그인 후 복사

반복되는 숫자 1이 아직 들어가지 않은 것을 볼 수 있습니다. 그리고 Set의 길이를 구하려면 길이가 아닌 Size를 사용하세요.

{} 또는 []의 경우 두 개의 동일한 객체라는 점에 유의해야 합니다

var s4 = new Set()
s4.add({})
s4.add({})
s4.size // 2

로그인 후 복사

1. 트래버스 세트(용)

var s1 = new Set()
s1.add(1)
s1.add(2)
s1.add(3)
 
// 输出1,2, 3
for (var i of s1) {
  console.log(i)
}

로그인 후 복사

2. 집합을 배열로 변환

var s1 = new Set()
s1.add(1)
s1.add(2)
 
// toArray
var a1 = Array.from(s1)
Array.isArray(a1) // true
 
// or
var a1 = [...new Set(s1)] 

로그인 후 복사

3. Set을 사용하여 어레이 중복 제거

function distinct(arr) {
  return Array.from(new Set(arr))
// return [...new Set(arr)]
}
로그인 후 복사

세트의 속성

건축자
사이즈
설정방법

has(val)은 요소가 존재하는지 확인합니다
add(val) 요소를 추가합니다
delete(val) 요소 삭제
Clear는 모든 요소를 ​​제거합니다
열쇠
가치
항목
forEach는 요소를 순회합니다
지도
필터

4. 위크세트

WeakSet과 Set은 중복된 요소를 저장하지 않지만 몇 가지 차이점이 있습니다

1. 객체 유형 요소만 저장

ws = new WeakSet()
ws.add(1)
로그인 후 복사

FF에서 보고된 오류는 다음과 같습니다

2. 추가/삭제/지우기/가짐 세 가지 방법만 있으며 순회할 수 없으며 크기 속성 등이 없습니다.

ws = new WeakSet()
ws.size // undefined
ws.forEach // undefined
로그인 후 복사

MDN 설명

WeakSet 개체에 저장된 개체 값은 약하게 참조됩니다. 다른 변수나 속성이 개체 값을 참조하지 않으면 개체 값이 가비지 수집됩니다. 이로 인해 WeakSet 개체를 열거할 수 없습니다. 포함된 모든 요소를 ​​가져올 수 있는 방법은 없습니다

WeakSet은 주로 DOM 노드를 저장하는 데 사용됩니다. 이러한 노드가 문서에서 제거되면 메모리 누수가 발생하지 않습니다.

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!