js map函数,js中map方法的使用

js map函数,js中map方法的使用,js的Map函数使用方法详解

本文主要介绍如何使用js的地图功能的详细说明。有需要的朋友可以参考一下。

是由Map ES2015引入的全局对象,

键-值对保存在映射中,任何对象(包括原始值)都可以用作键或值。

1. 构造函数

Map必须用作构造函数,

新地图([可重复])

它的参数是可选的,如果提供了,它必须是一个iterable对象。

被迭代对象的迭代结果为,[key1,value1],[key2,value2],

例如

//1.该数组是一个可迭代对象。

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

//2.生成器将返回一个iterable对象。

gen=function*(){

yield [1,' a '];

yield [2,' b '];

}

ITER=gen();

m=新地图(ITER);//Map(2) {1='a ',2='b'}

2. 实例属性

M.size用于获得密钥的数量,

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

m.size //2

3. 实例方法

(1)m.has(key),判断该键是否存在。

(2)m.get(key),取值,如果没有这个键,返回undefined(3)m.set(key,value),设置值,返回m(4)m.delete(key),如果键存在且已被删除,返回true,如果键不存在,返回false。

(5)m.clear(),删除所有键值对。

(6)m.keys(),它返回一个iterable对象,该对象包含按插入顺序迭代的所有键。

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

[.m.keys()] //[1,2]

(7)m.value(),它返回一个iterable对象,该对象包含按插入顺序迭代的所有值。

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

[.m.values()] //['a ',' b']

(8)m.entries(),返回一个iterable对象,每个元素为[key,value],遍历顺序为键的插入顺序。

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

[.m.entries()] //[[1,' a'],[2,' b']]

注:获取二维数组更方便的方法是使用Array.from,它可以直接接受Map作为参数,

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

Array.from(m) //[[1,' a'],[2,' b']]

Array.from也可以接受iterable对象,

Array.from(m.keys()) //[1,2]

Array.from(m.values()) //['a ',' b']

Array.from(m.entries()) //[[1,' a'],[2,' b']]

(9)m.forEach(fn[,thisArg]),用于按照key的插入顺序遍历地图。

m=新映射([[1,' a'],[2,' b ']);//Map(2) {1='a ',2='b'}

m.forEach((value,key)={

值//'a ',' b '

按键//1,2

});

注:第一个参数是value,第二个参数是key。

除了使用m.forEach,还可以使用for来遍历Map.的,

m=新映射([[1,' a'],[2,' b ']);

对于(第一个,共m个){

i //[1,' a'],[2,' b']

}

4. key的相等性判断

所谓的“SameValueZero”算法用于判断密钥的相等性:

(1)判断key相等时,认为NaN等于NaN。(就算楠!==南)

(2)其他种类的键由===运算符判断。

(3)目前认为0和-0相等符合ES2015规范,但会有浏览器兼容问题。

5. Map与Object对比

(1)1)对象的关键字只能是字符串或符号,

而Map的键可以是任何值,包括函数、对象或者任何原语值。

(2)对于Map,可以通过size属性直接获得键的个数,

而对象需要Object.keys(xxx)。长度来间接获得自身属性的数字。

(3)3)Map实例是一个可迭代的对象,可以直接用来遍历,

对象需要先获取其密钥,然后使用该密钥进行遍历。

(4)对象可以有原型对象,其自身属性可能会无意中与原型属性冲突。

(虽然在ES2015中,Object.create(null)可以创建一个没有原型的对象。)

(5)添加和删除映射键效率更高。

关于如何在js中使用Map函数的更多信息,请参见下面的相关链接。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: