es6学习笔记8--Map数据结构

前端开发 作者: 2024-08-22 11:20:01
Map Map结构的目的和基本用法 JavaScript的对象(Object),本质上是键值对的集合(Hash结构),但是只能用字符串当作键。这给它的使用带来了很大的限制。 上面代码原意是将一个DOM

Map结构的目的和基本用法

var data = {};
var element = document.getElementById("myDiv");

data[element] = metadata;
data["[Object HTMLDivElement]"] // metadata
var m = new Map();
var o = {p: "Hello World"};

m.set(o,"content")
m.get(o)  "content"

m.has(o)  true
m.delete(o)  true
m.has(o)  false
var map = new Map([["name","张三"],["title","Author"]]);

map.size  2
map.has("name")  true
map.get("name")  "张三"
map.has("title")  true
map.get("title")  "Author"
 Map();

map.set(['a'],555);
map.get(['a'])  undefined
 Map();

var k1 = ['a'];
var k2 = ['a'];

map
.set(k1,111)
.set(k2,222);

map.get(k1)  111
map.get(k2)  222
let map =  Map();

map.set(NaN,123);
map.get(NaN)  123

map.set(-0,123);
map.get(+0)  123

实例的属性和操作方法

遍历方法

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回所有成员的遍历器。
  • forEach():遍历Map的所有成员。
 等同于使用map.entries()
for (let [key,value] of map) {
  console.log(key,value);
}
map[Symbol.iterator] === map.entries
 true

WeakMap

 WeakMap()
map.set(1,2)
 TypeError: 1 is not an object!
map.set(Symbol(),1)"> TypeError: Invalid value used as weak map key
var wm =  WeakMap();
var element = document.querySelector(".element");

wm.set(element,"Original");
wm.get(element)  "Original"

element.parentNode.removeChild(element);
element = null;
wm.get(element)  undefined
let _counter =  WeakMap();
let _action =  WeakMap();

class Countdown {
  constructor(counter,action) {
    _counter.set(this,counter);
    _action.set();
    if (counter < 1) return;
    counter--;
    _counter.set(if (counter === 0) {
      _action.get()();
    }
  }
}

let c = new Countdown(2,() => console.log('DONE'));

c.dec()
c.dec()
 DONE
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_66637.html