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 노드를 저장하는 데 사용됩니다. 이러한 노드가 문서에서 제거되면 메모리 누수가 발생하지 않습니다.
위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.