建站公司哪家好都选万维科技,国外黄冈网站推广软件,wordpress 上一页,建设银行大连分行网站ES6 推出了Map 物件#xff0c;让开发者可以透过这个特制资料结构进行键值对(key-value pairs) 的操作。然而 JavaScript 原始物件 (plain object) 就可以用来做键值对的操作#xff0c;为什么还需要 Map 物件呢? Map 物件解决了什么问题?
原始物件的键 (key) 只可以是字串…ES6 推出了Map 物件让开发者可以透过这个特制资料结构进行键值对(key-value pairs) 的操作。然而 JavaScript 原始物件 (plain object) 就可以用来做键值对的操作为什么还需要 Map 物件呢? Map 物件解决了什么问题?
原始物件的键 (key) 只可以是字串但 Map 的键可以是任何东西
在用键值对处理资料时很常开发者会用各类东西做为键(key)但是在 JavaScript如果用原始物件不管用什么当做键都会被转换成字串这往往会造成一些错误例如被转成字串时原本两格不同的键被转成同样的字串这就导致撞键问题。而 Map 物件解决了这个问题开发者想用什么当键都可以。
原始物件不支援迭代 (iteration)但 Map 物件有
过去我们没办法直接对一个原始物件用 for...of 、forEach 来迭代而是需要用额外的方法例如 Object.entries 、 Object.keys 来协助。但是 Map 物件是可迭代的 (iterable)所以我们可以直接对 Map 物件用 for...of 、forEach。
原始物件的元素没有顺序性Map 物件则有顺序
上面提到 Map 物件是可迭代的它有一个相关的优点是在迭代时是有顺序性的。过去用原始物件即使用用物件方法 (例如 Object.entries 、 Object.keys 来协助迭代)迭代出的结果顺序不一定会是我们放入键值对的顺序。但有时候在写演算法时我们需要保留顺序这时 Map 物件就会好用很多。
Map 提供许多键值对常用的方法但原始物件没有
举例来说如果要知道一个键值对的大小Map 有size 方法简单又好用但如果用原始物件我们可能需要使用Object.keys 然后搭配.length 去自己找该物件有多少个键这就麻烦很多。另外 Map 也有提供 clear 方法可以一次把所有键值对删掉如果是原始物件就需要一个个删。