国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - Map與WeakMap類型在JavaScript中的使用詳解

Map與WeakMap類型在JavaScript中的使用詳解

2021-11-23 16:50陳鶯鶯呀 JavaScript

這篇文章主要介紹了Map與WeakMap類型在JavaScript中的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

map類型特點(diǎn)與創(chuàng)建方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
 
 
  <script>
    // 對(duì)象的鍵名會(huì)自動(dòng)轉(zhuǎn)為字符串
    // let obj = {
    //   1: 'cyy1',
    //   '1': 'cyy2'
    // };
    // console.log(obj);
 
    // 對(duì)象的鍵名是對(duì)象時(shí),會(huì)自動(dòng)轉(zhuǎn)為字符串
    // 讀取時(shí)也要先轉(zhuǎn)為字符串再讀取
    //     let obj = {
    //       name: 'cyy'
    //     };
    //     let obj2 = {
    //       obj: 'cyy2',
    //       [obj]: 'cyy3'
    //     };
    //     console.log(obj2);
    //     console.log(obj2[obj.toString()]);
 
    // map類型,什么都可以作為鍵,鍵名可以是任何類型
    // let map = new Map();
    // map.set('name', 'cyy');
    // map.set(function() {}, 'cyy2');
    // map.set({}, 'cyy3');
    // map.set(1, 'cyy4');
    // console.log(map);
 
    // 構(gòu)造函數(shù)創(chuàng)建時(shí)加入數(shù)據(jù)
    let map = new Map([
      ['name', 'cyy'],
      ['age', 18]
    ]);
    console.log(map);
 
    // 支持鏈?zhǔn)讲僮?/code>
    let str = 'cyy';
    let str2 = str.toUpperCase().substr(1, 2);
    console.log(str2);
 
    map.set('11', 11).set('22', 22);
    console.log(map);
  </script>
</body>
 
</html>

map類型增刪改查操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
 
 
  <script>
    let obj = {
      name: 'cyy'
    };
    let map = new Map();
    map.set(obj, 'obj');
    console.log(map.has(obj));
    console.log(map);
    console.log(map.get(obj));
    console.log(map.delete('abc'));
    console.log(map.delete(obj));
    map.clear();
    console.log(map);
  </script>
</body>
 
</html>

遍歷map類型數(shù)據(jù):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
 
 
  <script>
    let map = new Map([
      [1, 11],
      [2, 22]
    ]);
    // console.log(map.keys());
    // console.log(map.values());
    // console.log(map.entries());
 
    // for (let k of map.keys()) {
    //   console.log(k);
    // }
    // for (let v of map.values()) {
    //   console.log(v);
    // }
    // for (let e of map.entries()) {
    //   console.log(e);
    // }
    // for (let [k, v] of map.entries()) {
    //   console.log(`${k}--${v}`);
    // }
 
    map.forEach((item, key) => {
      console.log(item + '--' + key);
    })
  </script>
</body>
 
</html>

map類型轉(zhuǎn)換操作:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
 
  <script>
    let map = new Map([
      ['name', 'cyy'],
      ['age', '18']
    ]);
    // console.log(...map);
    // console.log([...map]);
    // console.log([...map.entries()]);
    // console.log([...map.keys()]);
    // console.log([...map.values()]);
 
    // let arr = [...map].filter(item => item[1].includes('cyy'));
    let arr = [...map].filter(item => {
      return item[1].includes('cyy');
    });
    // console.log(arr);
    let new_map = new Map(arr);
    console.log(new_map);
    console.log(new_map.values());
    // ...是展開(kāi)語(yǔ)法
    console.log(...new_map.values());
  </script>
</body>
 
</html>

map類型管理DOM節(jié)點(diǎn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
  <div name="cyy1">cyy1</div>
  <div name="cyy2">cyy2</div>
 
  <script>
    let map = new Map();
    let divs = document.querySelectorAll('div');
    divs.forEach(item => {
      // 往map中壓入數(shù)據(jù)
      map.set(item, {
        content: item.getAttribute('name')
      });
    });
    // console.log(map);
    map.forEach((config, elem) => {
      // console.log(config, elem);
      elem.addEventListener('click', function() {
        console.log(config.content);
      });
    })
  </script>
</body>
 
</html>

使用map類型控制網(wǎng)站表單提交:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
  <form action="#" onsubmit="return post()">
    接受協(xié)議:
    <input type="checkbox" name="agreement" error="請(qǐng)接受協(xié)議"> 我是學(xué)生:
    <input type="checkbox" name="student" error="網(wǎng)站只對(duì)學(xué)生開(kāi)放">
    <input type="submit" value="提交">
  </form>
 
  <script>
    function post() {
      let map = new Map();
      let inputs = document.querySelectorAll('[error]');
      console.log(inputs);
      inputs.forEach(item => {
        map.set(item, {
          error: item.getAttribute('error'),
          status: item.checked
        });
      });
      // console.log(map);
      return [...map].every(([elem, config]) => {
        // 短路操作,前面為真,則不會(huì)執(zhí)行后面
        // 前面會(huì)假,則執(zhí)行后面
        config.status || alert(config.error);
        return config.status;
        // console.log(config);
      });
 
    }
  </script>
</body>
 
</html>

Map與WeakMap類型在JavaScript中的使用詳解

WeakMap的語(yǔ)法使用:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
  <style>
 
  </style>
</head>
 
<body>
  <div>cyy</div>
  <div>cyy2</div>
 
  <script>
    // WeakMap的鍵只能是引用對(duì)象
    // let map = new WeakMap();
    // map.set('name');
    // console.log(map);
 
    // map.set([]);
    // console.log(map);
 
    // let map = new WeakMap();
    // let divs = document.querySelectorAll('div');
    // divs.forEach(item => map.set(item, item.innerHTML));
    // console.log(map);
 
    // WeakMap也是弱引用類型
    // let arr = [];
    // let map = new WeakMap();
    // map.set(arr, 'cyy');
    // map.delete(arr);
    // console.log(map.has(arr));
    // console.log(map);
 
    // 弱引用類型,values、keys、entries、迭代循環(huán)都用不了
    let map = new WeakMap();
    // console.log(map.keys());
 
    for (const iterator of map) {
      console.log(iterator);
    }
  </script>
</body>
 
</html>

WeakMap弱引用類型體驗(yàn):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  <style>
 
  </style>
</head>
 
<body>
 
 
  <script>
    let a = { name: 'cyy' };
    let b = a;
    let map = new WeakMap();
    map.set(a, 'cuu2');
    console.log(map);
    a = null;
    b = null;
    console.log(map);
    setTimeout(function () {
      console.log(map);
    }, 1000);
  </script>
</body>
 
</html>

使用WeakMap開(kāi)發(fā)選課組件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
 
    main {
      width: 100%;
      display: flex;
      flex: 1;
    }
 
    section {
      border: 2px solid #ddd;
      width: 50%;
      padding: 10px;
    }
 
    ul {
      list-style: none;
    }
 
    li {
      padding: 10px;
      border: 2px solid orange;
      margin-bottom: 5px;
      position: relative;
    }
 
    a {
      display: inline-block;
      position: absolute;
      right: 10px;
      width: 20px;
      height: 20px;
      background: green;
      color: white;
      text-decoration: none;
      line-height: 20px;
      text-align: center;
    }
 
    #list span {
      background: green;
      border-radius: 5px;
      padding: 5px;
      color: white;
      margin: 5px;
    }
 
    #list {
      margin-top: 20px;
    }
  </style>
</head>
 
<body>
  <main>
    <section>
      <ul>
        <li><span>html</span><a href="javascript:;">+</a></li>
        <li><span>css</span><a href="javascript:;">+</a></li>
        <li><span>js</span><a href="javascript:;">+</a></li>
      </ul>
    </section>
    <section>
      <strong id="count">共選了2門課</strong>
      <p id="list">
        <!-- <span>111</span> -->
      </p>
    </section>
  </main>
 
  <script>
    class Lesson {
      // 構(gòu)造函數(shù)
      constructor() {
        this.lis = document.querySelectorAll('li');
        this.countElem = document.getElementById('count');
        this.listElem = document.getElementById('list');
        // console.log(this.lis, this.countElem, this.listElem);
        this.map = new WeakMap();
      }
      run() {
        this.lis.forEach(li => {
          li.querySelector('a').addEventListener('click', event => {
            let a = event.target;
            // console.log(li);
            // console.log(event.target.parentElement);
            const state = li.getAttribute('select');
            if (state) {
              // 移除
              li.removeAttribute('select');
              this.map.delete(li);
              a.style.backgroundColor = 'green';
              a.innerHTML = '+';
            } else {
              // 添加
              li.setAttribute('select', true);
              this.map.set(li);
              a.style.backgroundColor = 'red';
              a.innerHTML = '-';
            }
            // console.log(this.map);
            this.render();
          });
        })
      }
      render() {
        this.countElem.innerHTML = `共選了${this.count()}門課`;
        // console.log(this.count());
        this.listElem.innerHTML = this.list();
      }
      count() {
        return [...this.lis].reduce((count, li) => {
          return count += this.map.has(li) ? 1 : 0;
        }, 0);
      }
      list() {
        let lis = [...this.lis].filter(li => {
          return this.map.has(li);
        }).map(li => {
          return `<span>${li.querySelector('span').innerHTML}</span>`;
        }).join('');
        // console.log(lis);
        return lis;
      }
    }
    new Lesson().run();
  </script>
</body>
 
</html>

Map與WeakMap類型在JavaScript中的使用詳解

到此這篇關(guān)于Map與WeakMap類型在JavaScript中的使用的文章就介紹到這了,更多相關(guān)Map與WeakMap類型在JavaScript中的使用內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/chenyingying0/archive/2020/11/17/13995123.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久亚洲天堂 | 久久精品国产99国产精品 | 日韩成人免费 | 久久精品美女 | 插插射啊爱视频日a级 | 久久久大| 亚洲一区视频在线 | 黄色高清视频在线观看 | 久久性色| 国产在线欧美 | 日本免费精品视频 | 中文字幕欧美激情 | 天堂久久爱资源站www | 精品96久久久久久中文字幕无 | 午夜成人在线视频 | 久久九九精品视频 | 成人免费视频播放 | 日韩欧美成人影院 | 国内自拍第一页 | 欧美亚洲高清 | 婷婷国产| 日韩精品在线播放 | 国产欧美精品一区二区三区四区 | 日韩在线亚洲 | 国产一区二区三区四区在线观看 | 国产一二三区在线观看 | 日韩综合 | 黄色成人在线观看视频 | 日韩成人在线视频 | 韩国一区二区视频 | 一区二区三区日韩 | 日韩高清一区 | 久久午夜影院 | 久久中文字幕视频 | 免费在线a | 中文字幕亚洲综合久久久软件 | 国产精品178页 | 美女毛片 | 日韩精品一区二区三区四区五区 | 欧美在线小视频 | 日韩在线影院 |