javascript中的map,我用的不是特別多,倒是Java中的Map或HashMap,經常用。
順便圍繞幾個方面介紹一下map?
1.Map對象
Map對象是一種有對應鍵值對的對象,JS的Object也是鍵值對的對象。
ES6中的Map相對Object對象有幾個區別?
(1)Object對象有原型,也就是說它有默認的key值在對象上面,除非我們使用Object.create(null)創建一個沒有原型的對象;
(2)在Object中,只能把String和Symbol作為key值,但是在Map中,key值可以是任何基本類型(String,Number,Boolean,undefined,NaN…),或者對象(Map,Set,Object,Function,Symbol,null…);
(3)通過Map中的size屬性,可以很方便地獲取Map長度,要獲取Object的長度,你只能用別的方法;
Map實例對象的key值可以為一個數組或者一個對象,或者一個函數,比較隨意,而且Map對象實例中數據的排序是根據用戶push的順序進行排序的,而Object實例中key,value的順序則有些規律(它們會先排數字開頭的值,然后才是字符串開頭的key值);
2.Map實例屬性
map.size這個屬性和數組的length功能一樣,都表示當前實例的長度。
3.Map實例的方法
clear() 刪除所有的鍵值對;
delete(key) 刪除指定鍵;
entries() 返回一個迭代器,迭代器按照對象的插入順序返回[key,value];
forEach(callback,context) 循環執行函數並把鍵值對作為參數,context為執行函數的上下文this;
get(key) 返回Map對象key相對的value值;
has(key) 返回布爾值,判斷Map對象是否存在指定的key;
keys() 返回一個迭代器,迭代器按照插入的順序返回每一個key元素;
set(key,value) 給Map對象設置key/value鍵值對,返回這個Map對象(相對於JavaScript的Set,Set對象添加元素的方法叫add,而Map對象添加元素的方法為set)
iterator 和entireds()方法一樣,返回一個迭代器,迭代器按照對象的插入順序返回[key,value]
代碼示例如下(這段與后台交互的代碼,主要是為了測試):
<html> <head> <script src="jquery-1.8.0.min.js"></script> </head> <body> <script> $.ajax({ url:"http://localhost:2019/comments/recentsComments", type:"GET", contentType: 'application/json;charset=utf-8', dataType : 'json', success:function(data){ console.log(data.code); var m = new Map(); m.set("data",data.list); console.log(m.get("data")); },error:function(){ } }); </script> </body> </html>
本文主要參考鏈接如下所示:
ES6新特性:JavaScript中的Map和WeakMap對象:https://www.cnblogs.com/diligenceday/p/5484130.html