JavaScript 標準之 Map物件

2021-09-14 01:45:47 字數 2192 閱讀 3635

一直以來使用陣列和物件來定義資料模型,前幾天在翻閱es6語法的時候,突然發現有一種map物件對操作鍵值對特別好用,而且**更簡潔明瞭,簡直太棒了。今天,我們就來一步步了解什麼是map物件,詳細給大家介紹一下map物件的屬性和方法。希望大家以後再資料操縱方法多一種解決問題的方法,這是ecmascript 6 新增的資料結構。

定義map物件儲存鍵/值對,是鍵/值對的集合。任何值(物件或者原始值) 都可以作為乙個鍵或乙個值。object結構提供了「字串—值」的對應,map結構提供了「值—值」的對應。

語法iterable 可以是乙個陣列或者其他iterable 物件,其元素或為鍵值對,或為兩個元素的陣列。 每個鍵值對都會新增到新的 map。null 會被當做 undefined。

描述 集合中的鍵和值可以是任何型別。如果使用現有鍵向集合新增值,則新值會替換舊值。

object 和 map 物件的對比:

相似點: 都允許你按鍵訪問乙個值、刪除鍵、檢測乙個鍵是否繫結了值。

不同點:

乙個物件的鍵只能是字串或者 symbols,但乙個 map 的鍵可以是任意值,包括函式、物件、基本型別。

map 中的鍵值是有序的,而新增到物件中的鍵則不是。因此,當對它進行遍歷時,map物件是按插入的順序返回鍵值。

通過 size 屬性直接獲取乙個 map 的鍵值對個數,而 object 的鍵值對個數只能手動計算。

map 是可迭代的,而 object 的迭代需要先獲取它的鍵陣列然後再進行迭代。

object 都有自己的原型,所以原型鏈上的鍵名有可能和物件上的鍵名產生衝突。雖然 es5 開始可以用 map = object.create(null) 來建立乙個沒有原型的物件,但是這種用法不太常見。

map 在頻繁增刪鍵值對的場景下會有些效能優勢。 屬性

下表列出了map物件的屬性屬性描述

map例項所有的map例項都會繼承自map.prototype。

屬性 下表列出了map物件例項的屬性

方法下表列出了map物件例項的方法

示例map物件類似於物件,也是鍵值對的集合,但是「鍵」的範圍不限於字串,各種型別的值(包括物件)都可以當作鍵。

作為建構函式,map也可以接受乙個陣列作為引數。該陣列的成員是乙個個表示鍵值對的陣列。

如果對同乙個鍵多次賦值,後面的值將覆蓋前面的值。

如果讀取乙個未知的鍵,則返回undefined。!!!注意,只有對同乙個物件的引用,map結構才將其視為同乙個鍵。map 的鍵實際上是跟記憶體位址繫結的,只要記憶體位址不一樣,就視為兩個鍵。這就解決了同名屬性碰撞(clash)的問題,我們擴充套件別人的庫的時候,如果使用物件作為鍵名,就不用擔心自己的屬性與原作者的屬性同名。

map.clear() 方法清除所有成員,沒有返回值。

map物件遍歷方法示例

結合陣列的map() 和filter()方法,可以實現對map的遍歷和過濾(map本身沒有map()和filter()方法)

map物件還有乙個foreach方法,與陣列的foreach方法類似,也可以實現遍歷。

JavaScript基礎之標準物件

為了區分物件的型別,我們用typeof操作符獲取物件的型別,它總是返回乙個字串.總結一下有這麼幾條規則需要遵守 1.不要使用new number new boolean new string 建立包裝物件 2.用parseint 或者parsefloat 來轉換任意型別到number 3.用stri...

JavaScript 標準之 Map物件

一直以來使用陣列和物件來定義資料模型,前幾天在翻閱es6語法的時候,突然發現有一種map物件對操作鍵值對特別好用,而且 更簡潔明瞭。對資料操縱方法多一種解決問題的方法,這是ecma 6 新增的資料結構。map物件儲存鍵 值對,是鍵 值對的集合。任何值 物件或者原始值 都可以作為乙個鍵或乙個值。obj...

javascript實現java中的map

map.js function map linkitems 獲取當前map return 當前物件 map.noop function 非法操作 return map.illegal function param obj param foreignkeys return map.from funct...