Arrays
Sets
Maps
Set은 데이터 구조로 고유한 값을 관리할 때 유용하다.
const ids = new Set([1, 2, 3]); // 어떤 Iterable도 가능. 배열, 또다른 Set, 노드리스트 등
console.log(ids.has(1));
for (const entry of ids.entries()) {
console.log(entry);
//(2) [1, 1]
//(2) [2, 2]
//(2) [3, 3]
}
// => ids의 값을 변경한 뒤 다시 확인해보자!
const ids = new Set(["Hi", "from", "set!"]);
for (const entry of ids.entries()) {
console.log(entry[0]);
//(2) ['Hi', 'Hi']
//(2) ['from', 'from']
//(2) ['set!', 'set!']
}
if (ids.has("Hi")) {
ids.delete("Hi");
}
console.log(ids); //
has() : 데이터 저장소로부터 어떤 값을 포함하고 있는지 아닌지를 알려줌 → true/false 반환entries() : Iterable을 반환. → for문에서 사용가능하다.delete() : Set에서 요소 삭제const person1 = { name: "Max" };
const person2 = { name: "Manuel" };
const personData = new Map([[person1, [{ date: "yesterday", price: 10 }]]]);
console.log(personData);
// Map(1) {{…} => Array(1)}
// [[Entries]]
// 0: {Object => Array(1)}
// key: {name: 'Max'}
// value: Array(1)
// 0: {date: 'yesterday', price: 10}
// length: 1
// [[Prototype]]: Array(0)
// size: 1
console.log(personData.get(person1));
//[{…}]
//0:
// date: "yesterday"
// price: 10
// [[Prototype]]: Object
//length: 1
//[[Prototype]]: Array(0)
//========================== Map의 set() ==========================
personData.set(person2, [{ date: "two weeks ago", price: 100 }]);
console.log(personData);
//========================== Map의 entries() ==========================
for (const entry of personData.entries()) {
console.log(entry);
}
//========================== Map의 배열구조 분해 이용 ==========================
for (const [key, value] of personData.entries()) {
console.log(key, value);
}
for (const key of personData.keys()) {
console.log(key);
}
// {name: 'Max'}
// {name: 'Manuel'}
for (const value of personData.values()) {
console.log(value);
} // value값만 나옴.
console.log(personData.size) // 2 => Maps안에 키-쌍이 2개 있기 때문
Maps
Objects
entries()가 보이지 않는데, 이는 WeakMap과 같이 내부적으로만 객체를 저장할 수 있으므로 실제로는 해당 객체를 지우는 것이다.let person = { name: 'Max' };
const persons = new WeakSet();
persons.add(person);
console.log(persons)
const personData = new WeakMap();
personData.set(person, 'Extra info')
person = null;
console.log(personData)