ES6: 맵 데이터 구조

개념: 객체와 마찬가지로 키-값 쌍의 모음이기도 하지만 "키"의 범위가 문자열에 국한되지 않고 다양한 유형의 값(객체 포함)을 키로 사용할 수 있습니다.

지도 알아보기

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}
*/

참조: 014-ES6-Map 데이터 구조_哔哩哔哩_bilibili

추천

출처blog.csdn.net/CaptainDrake/article/details/131624952