资讯专栏INFORMATION COLUMN

es6基础0x012:Map

DesGemini / 791人阅读

摘要:概述也是一个新的数据结构,在中其实也经常用到,比如下面的栗子,我们经常这么使用一个对象,与其说他是对象,其实他更像一个,但是比起真正的,这个还是有点弱了,初始化初始化一个有一个可选的参数,该参数必须是一个可迭代对象,可迭代对象包括和用户定

0x000 概述

Map也是一个新的数据结构,在js中其实也经常用到,比如下面的栗子,我们经常这么使用一个对象,与其说他是对象,其实他更像一个Map,但是比起真正的Map,这个还是有点弱了,

let color={
    "red":"#FF0000",
    "green":"#00FF00",
    "blue":"#0000FFF"
}
color["red"]
0x001 初始化
new Map([iterable])

初始化一个Map有一个可选的参数,该参数必须是一个可迭代对象可迭代对象包括StringArrayArray-Like obejct(Arguments、NodeList)Typped ArraySetMap用户定义的可迭代对象

数组

new Map([[1,2],[3,4]]) // Map(2) {1 => 2, 3 => 4}

0x002 添加

和对象作为Map相比,Map的键可以是任意值,甚至可以是NaN

var myMap = new Map();
 
var keyObj = {},
    keyFunc = function () {},
    keyString = "a string";
 
// 添加键
myMap.set(keyString, "和键"a string"关联的值");
myMap.set(keyObj, "和键keyObj关联的值");
myMap.set(keyFunc, "和键keyFunc关联的值");
0x003 获取Map的大小
myMap.size    // 3
0x004 获取
myMap.get(keyString)   // "和键"a string"关联的值"
myMap.get(keyObj)     // "和键keyObj关联的值"
myMap.get(keyFunc)      // "和键keyFunc关联的值"
0x005 是否包含
myMap.has(keyString)  // true
myMap.has("1")  // false
0x006 删除
myMap.delete(keyString)  // true
myMap.delete("")  // false
0x007 遍历
myMap.forEach(m=>{console.log(m)})
// 和键"a string"关联的值
//  和键keyObj关联的值
//  和键keyFunc关联的值
0x008 获取迭代器
let entries=myMap.entries()
entries.next().value // 和键"a string"关联的值
entries.next().value//  和键keyObj关联的值
entries.next().value//   和键keyFunc关联的值
0x009 获取 key 迭代器
let keys=myMap.keys()
keys.next().value //  "a string"
keys.next().value//  function () {}
keys.next().value//   {}
0x010 获取 value 迭代器
let values=myMap.values()
values.next().value // 和键"a string"关联的值
values.next().value//  和键keyObj关联的值
values.next().value//   和键keyFunc关联的值
0x011 清除
mySet.clear()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99250.html

相关文章

  • es6基础0x021:反射

    摘要:概述反射说起来和上一章节的代理基本一样,只是使用的方式不同,设计理念也不同。 0x000 概述 反射说起来和上一章节的代理基本一样,只是使用的方式不同,设计理念也不同。 反射提供了一系列的静态函数,可以使用Reflect.function_name(...prams)调用,这一系列的方法和代理的处理器对象方法一致 0x001 apply 语法 Reflect.apply(targ...

    booster 评论0 收藏0
  • es6基础0x020:代理

    摘要:概述代理嘛,就是请代理人代替自己做某件事,但是和自己不一样的是代理人可以有自己的行为,甚至可以做出和预期相违背的行为。 0x000 概述 代理嘛,就是请代理人代替自己做某件事,但是和自己不一样的是代理人可以有自己的行为,甚至可以做出和预期相违背的行为。 0x001 栗子 声明一个普通对象origin,他有一个属性name let origin={ name: origin } ...

    hatlonely 评论0 收藏0
  • React入门0x012: 组件通信

    摘要:可以看到,父级更新了,子组件也同步更新了,也就完成了父组件向子组件发起通信的目的。当然我们也可以通过适当的组件设计来避免过深的组件嵌套通信。所以这就解决了远程组件通信深度组件嵌套的问题。组件间通信可以选择像这样的库来处理。 0x000 概述 这一章讲组件间通信,组件通信分为很多种: 父组件向子组件发起通信 子组件向父组件发起通信 兄弟组件间通讯 远程组件通信 在组件通信中,有一种错...

    Tonny 评论0 收藏0
  • ES6基础知识01(let,const,解构赋值)

    摘要:声明的变量不得改变值,这意味着,一旦声明变量,就必须立即初始化,不能留到以后赋值。解构赋值允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。对象的解构赋值对象的属性没有次序,变量必须与属性同名。 ES6 新增特性整理讲解 新增命令 1.let命令 ES6新增了let命令,用来声明变量。它的用法类似于var,但是也存在新的特性。 - **let所声明的变量,只在le...

    MSchumi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<