javascript之Map


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM