개념: 객체와 마찬가지로 키-값 쌍의 모음이기도 하지만 "키"의 범위가 문자열에 국한되지 않고 다양한 유형의 값(객체 포함)을 키로 사용할 수 있습니다.
지도 알아보기
let m1 = new Map([
["name", "Nathan"],
["age", 100],
[{a:1}, "WUXI"]
])
console.log(m1); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}
let m2 = new Map()
m2.set("name", "Nathan")
m2.set("age", 100)
m2.set({a:1}, "WUXI")
console.log(m2); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}
인스턴스 속성 및 메서드
크기: 맵 구조의 총 구성원 수를 반환합니다.
Map.prototype.set(key,value)
: 키에 해당하는 값을 추가하고 Map 구조체 자체를 반환합니다.
Map.prototype.get(key)
: 키에 해당하는 값 가져오기
Map.prototype.delete(key)
: 키 삭제(키 이름 + 키 값), true 또는 false 반환
Map.prototype.has(key)
: 키가 현재 Map 객체에 있는지 여부, true 또는 false 반환
Map.prototype.clear()
: 모든 멤버를 지우고 반환 값은 없습니다.
let m1 = new Map([
["name", "Nathan"],
["age", 100],
[{a:1}, "WUXI"]
])
console.log(m1); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}
console.log(m1.set("test", 100)); // Map(4) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI', 'test' => 100}
console.log(m1.get("age")); // 100
console.log(m1.delete("test")); // true
console.log(m1.has("test")); // false
console.log(m1); // Map(3) {'name' => 'Nathan', 'age' => 100, {…} => 'WUXI'}
m1.clear()
console.log(m1);
횡단
Map.prototype.keys(): 키 이름의 순회자를 반환합니다.
Map.prototype.values(): 키 값에 대한 반복자를 반환합니다.
Map.prototype.entries(): 모든 구성원에 대한 순회자를 반환합니다.
Map.prototype.forEach(): Map의 모든 구성원을 탐색합니다.
let m1 = new Map([
["name", "Nathan"],
["age", 100],
[{a:1}, "WUXI"]
])
for(let i of m1.keys()) {
console.log(i); // name age {a: 1}
}
for(let i of m1.values()) {
console.log(i); // Nathan 100 WUXI
}
for(let [index, item] of m1.entries()) {
console.log(index + ': ' + item);
}
for(let [index, item] of m1) { // m1和m1.entries()的迭代器是同一个迭代器
console.log(index + ': ' + item);
}
/*
name: Nathan
age: 100
[object Object]: WUXI
*/
m1.forEach((item, index) => {
console.log(item, index);
})
/*
Nathan name
100 'age'
WUXI {a: 1}
*/