選擇 Object 還是 Map

2022-06-05 11:36:10 字數 835 閱讀 4664

1. 記憶體占用

object 和 map 的工程級實現在不同瀏覽器間存在明顯差異,但儲存單個鍵/值對所占用的記憶體數量

都會隨鍵的數量線性增加。批量新增或刪除鍵/值對則取決於各瀏覽器對該型別記憶體分配的工程實現。

不同瀏覽器的情況不同,但給定固定大小的記憶體,map 大約可以比 object 多儲存 50%的鍵/值對。

2. 插入效能

向 object 和 map 中插入新鍵/值對的消耗大致相當,不過插入 map 在所有瀏覽器中一般會稍微快

一點兒。對這兩個型別來說,插入速度並不會隨著鍵/值對數量而線性增加。如果**涉及大量插入操

作,那麼顯然 map 的效能更佳。

3. 查詢速度

與插入不同,從大型 object 和 map 中查詢鍵/值對的效能差異極小,但如果只包含少量鍵/值對,

則 object 有時候速度更快。在把 object 當成陣列使用的情況下(比如使用連續整數作為屬性),瀏

覽器引擎可以進行優化,在記憶體中使用更高效的布局。這對 map 來說是不可能的。對這兩個型別而言,

查詢速度不會隨著鍵/值對數量增加而線性增加。如果**涉及大量查詢操作,那麼某些情況下可能選

擇 object 更好一些。

4. 刪除效能

使用 delete 刪除 object 屬性的效能一直以來飽受詬病,目前在很多瀏覽器中仍然如此。為此,

出現了一些偽刪除物件屬性的操作,包括把屬性值設定為 undefined 或 null。但很多時候,這都是一

種討厭的或不適宜的折中。而對大多數瀏覽器引擎來說,map 的 delete()操作都比插入和查詢更快。

如果**涉及大量刪除操作,那麼毫無疑問應該選擇 map。

Map中object轉換成boolean型別

ajax請求查詢資料之後,返回的是map型別,resultmap.put flag flag 在接收到資料之後判斷時,轉換出現異常,導致頁面點選按鈕之後,頁面沒有反應,http請求報404異常,乙個風馬牛不相及的請求響應。後台也沒有報錯。檢查後台 發現,處理判斷時出現異常,resultmap.get...

map使用下標 還是insert

記錄學習一下。insert操作,如果該鍵值不存在,那麼就插入成功,如果存在,那麼就失敗 注意 它不會修改該鍵值對應的value值 操作,是先將該鍵值對應的value賦值成預設值,然後再賦值成給的值,如果鍵值已經存在,那麼它會修改該鍵值對應的value 所以,用的時候要注意了,如果希望新新增的值,要覆...

選擇現實,還是選擇愛情?

很多人不相信愛情。他們單純的相信著,愛情只有在童話故事裡存在,是人類臆想出來的虛無縹緲的產物。只有落在地上的房子和寫在銀行卡上的數字才是實際的存在。於是我們看到很多人在選擇愛情的時候,有了很多標準,要具備哪些條件,才會去戀愛。當然,大部分還是沒有那麼極端的,還是願意相信愛情的。只是有另外一些理由支援...