ES6-컬렉션
ES6에는 두 가지 새로운 데이터 구조 인 맵과 세트가 도입되었습니다.
Maps −이 데이터 구조를 사용하면 키를 값에 매핑 할 수 있습니다.
Sets− 집합은 배열과 유사합니다. 그러나 세트는 중복을 권장하지 않습니다.
지도
Map 객체는 간단한 키 / 값 쌍입니다. 맵의 키와 값은 기본 또는 객체 일 수 있습니다.
다음은 동일한 구문입니다.
new Map([iterable])
iterable 매개 변수는 요소가 키 / 값 쌍으로 구성된 반복 가능한 객체를 나타냅니다. 맵은 순서가 지정됩니다. 즉, 삽입 된 순서대로 요소를 순회합니다.
지도 속성
Sr. 아니요 | 속성 및 설명 |
---|---|
1 |
Map.prototype.size
이 속성은 Map 개체의 키 / 값 쌍 수를 반환합니다. |
기본지도 작업 이해
set () 함수는 Map 객체의 키 값을 설정합니다. set () 함수는 키와 해당 값이라는 두 개의 매개 변수를 사용합니다. 이 함수는 Map 객체를 반환합니다.
has () 함수는 지정된 키가 Map 객체에 있는지 여부를 나타내는 부울 값을 반환합니다. 이 함수는 키를 매개 변수로 사용합니다.
var map = new Map();
map.set('name','Tutorial Point');
map.get('name'); // Tutorial point
위의 예는지도 객체를 만듭니다. 지도에는 요소가 하나만 있습니다. 요소 키는 다음과 같이 표시됩니다.name. 키는 값에 매핑됩니다.Tutorial point.
Note− 맵은 유사한 값을 구분하지만 데이터 유형이 다릅니다. 즉,integer key 1 다른 것으로 간주됩니다 string key “1”. 이 개념을 더 잘 이해하려면 다음 예제를 고려하십시오.
var map = new Map();
map.set(1,true);
console.log(map.has("1")); //false
map.set("1",true);
console.log(map.has("1")); //true
산출
false
true
그만큼 set()메소드도 연결 가능합니다. 다음 예를 고려하십시오.
var roles = new Map();
roles.set('r1', 'User')
.set('r2', 'Guest')
.set('r3', 'Admin');
console.log(roles.has('r1'))
산출
True
위의 예는지도 객체를 정의합니다. 이 예제에서는 set () 함수를 연결하여 키 / 값 쌍을 정의합니다.
그만큼 get() 함수는 지정된 키에 해당하는 값을 검색하는 데 사용됩니다.
Map 생성자는 배열로 전달 될 수도 있습니다. 또한 map은 배열을 나타내는 확산 연산자의 사용을 지원합니다.
예
var roles = new Map([
['r1', 'User'],
['r2', 'Guest'],
['r3', 'Admin'],
]);
console.log(roles.get('r2'))
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
Guest
Note − 지정된 키가 맵에 존재하지 않는 경우 get () 함수는 undefined를 반환합니다.
set ()은 이미 맵에있는 경우 키 값을 대체합니다. 다음 예를 고려하십시오.
var roles = new Map([
['r1', 'User'],
['r2', 'Guest'],
['r3', 'Admin'],
]);
console.log(`value of key r1 before set(): ${roles.get('r1')}`)
roles.set('r1','superUser')
console.log(`value of key r1 after set(): ${roles.get('r1')}`)
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
value of key r1 before set(): User
value of key r1 after set(): superUser
지도 방법
Sr. 아니요 | 방법 및 설명 |
---|---|
1 |
Map.prototype.clear ()
Map 개체에서 모든 키 / 값 쌍을 제거합니다. |
2 |
Map.prototype.delete (키)
키에 연결된 모든 값을 제거하고 Map.prototype.has (key)가 이전에 반환했을 값을 반환합니다. Map.prototype.has (key)는 나중에 false를 반환합니다. |
삼 |
Map.prototype.entries ()
다음을 포함하는 새 Iterator 객체를 반환합니다. an array of 삽입 순서에서 Map 개체의 각 요소에 대한 [키, 값]. |
4 |
Map.prototype.forEach (callbackFn [, thisArg])
전화 callbackFn삽입 순서에 따라 Map 개체에있는 각 키-값 쌍에 대해 한 번씩. thisArg 매개 변수가 forEach에 제공되면 각 콜백의 'this'값으로 사용됩니다. |
5 |
Map.prototype.keys ()
다음을 포함하는 새 Iterator 개체를 반환합니다. keys 삽입 순서에서 Map 개체의 각 요소에 대해 |
6 |
Map.prototype.values ()
다음을 포함하는 새 Iterator 객체를 반환합니다. an array of 삽입 순서에서 Map 개체의 각 요소에 대한 [키, 값]. |
for… of 루프
다음 예제는 for… of 루프를 사용하여지도를 순회하는 것을 보여줍니다.
'use strict'
var roles = new Map([
['r1', 'User'],
['r2', 'Guest'],
['r3', 'Admin'],
]);
for(let r of roles.entries())
console.log(`${r[0]}: ${r[1]}`);
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
r1: User
r2: Guest
r3: Admin
약한지도
약한 맵은 다음을 제외하고 맵과 동일합니다.
키는 객체 여야합니다.
약한 맵의 키는 가비지 수집이 가능합니다. Garbage collection 프로그램에서 참조되지 않은 개체가 차지하는 메모리를 지우는 프로세스입니다.
약한 맵은 반복하거나 지울 수 없습니다.
예 : 약한지도
'use strict'
let weakMap = new WeakMap();
let obj = {};
console.log(weakMap.set(obj,"hello"));
console.log(weakMap.has(obj));// true
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
WeakMap {}
true
세트
세트는 ES6 데이터 구조입니다. 중복을 포함 할 수 없다는 점을 제외하면 배열과 유사합니다. 즉, 고유 한 값을 저장할 수 있습니다. 집합은 기본 값과 개체 참조를 모두 지원합니다.
맵과 마찬가지로 세트도 순서가 지정됩니다. 즉, 요소는 삽입 순서대로 반복됩니다. 다음 구문을 사용하여 집합을 초기화 할 수 있습니다.
속성 설정
Sr. 아니요 | 속성 및 설명 |
---|---|
1 |
Set.prototype.size
Set 개체의 값 수를 반환합니다. |
설정 방법
Sr. 아니요 | 방법 및 설명 |
---|---|
1 |
Set.prototype.add (값)
지정된 값을 가진 새 요소를 Set 개체에 추가합니다. Set 개체를 반환합니다. |
2 |
Set.prototype.clear ()
Set 개체에서 모든 요소를 제거합니다. |
삼 |
Set.prototype.delete (값)
값과 연관된 요소를 제거합니다. |
4 |
Set.prototype.entries ()
다음을 포함하는 새 Iterator 객체를 반환합니다. an array of삽입 순서대로 Set 개체의 각 요소에 대한 [값, 값]입니다. 이것은 Map 객체와 유사하게 유지되므로 각 항목은 여기에서 키와 값에 대해 동일한 값을 갖습니다. |
5 |
Set.prototype.forEach (callbackFn [, thisArg])
전화 callbackFn삽입 순서대로 Set 개체에있는 각 값에 대해 한 번씩. 만약athisArg 매개 변수가 forEach에 제공되면 각 콜백의 'this'값으로 사용됩니다. |
6 |
Set.prototype.has (값)
요소가 Set 객체에 주어진 값으로 존재하는지 여부를 주장하는 부울을 반환합니다. |
7 |
Set.prototype.values ()
다음을 포함하는 새 Iterator 개체를 반환합니다. values 삽입 순서에서 Set 개체의 각 요소에 대해 |
약한 세트
Weak 세트는 개체 만 포함 할 수 있으며 포함 된 개체는 가비지 수집 될 수 있습니다. 약한 맵과 마찬가지로 약한 세트는 반복 할 수 없습니다.
예 : 약한 집합 사용
'use strict'
let weakSet = new WeakSet();
let obj = {msg:"hello"};
weakSet.add(obj);
console.log(weakSet.has(obj));
weakSet.delete(obj);
console.log(weakSet.has(obj));
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
true
false
반복자
Iterator는 한 번에 하나씩 개체 컬렉션에 액세스 할 수있는 개체입니다. set과 map에는 모두 반복자를 반환하는 메서드가 있습니다.
반복자는 next()방법. next () 메서드가 호출되면 다음과 같은 객체를 반환합니다.'value' 과 'done'속성. 'done'은 부울이며 컬렉션의 모든 항목을 읽은 후 true를 반환합니다.
예제 1 : 설정 및 반복자
var set = new Set(['a','b','c','d','e']);
var iterator = set.entries();
console.log(iterator.next())
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
{ value: [ 'a', 'a' ], done: false }
세트는 키 / 값을 저장하지 않기 때문에 값 배열은 유사한 키와 값을 포함합니다. 읽을 요소가 더 많으므로 done은 거짓입니다.
예제 2 : 설정 및 반복자
var set = new Set(['a','b','c','d','e']);
var iterator = set.values();
console.log(iterator.next());
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
{ value: 'a', done: false }
예제 3 : 설정 및 반복자
var set = new Set(['a','b','c','d','e']);
var iterator = set.keys();
console.log(iterator.next());
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
{ value: 'a', done: false }
예제 4 :지도 및 반복기
var map = new Map([[1,'one'],[2,'two'],[3,'three']]);
var iterator = map.entries();
console.log(iterator.next());
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
{ value: [ 1, 'one' ], done: false }
예제 5 :지도 및 반복기
var map = new Map([[1,'one'],[2,'two'],[3,'three']]);
var iterator = map.values();
console.log(iterator.next());
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
{value: "one", done: false}
예제 6 :지도 및 반복기
var map = new Map([[1,'one'],[2,'two'],[3,'three']]);
var iterator = map.keys();
console.log(iterator.next());
위 코드가 성공적으로 실행되면 다음 출력이 표시됩니다.
{value: 1, done: false}