资讯专栏INFORMATION COLUMN

es6基础0x012:Map

DesGemini / 729人阅读

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

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
  • Redis基础系列-0x006:Set

    摘要:添加一个值命令格式获取的数量命令格式判断是否是的命令格式获取的所有命令格式随机弹出指定数量的元素命令格式移除指定元素命令格式获取指定集合的并集命令格式将指定集合的并集存储到新的命令格式返回指定集合的交集命令格式将指定集合的交集存到新的命令格 0x001 添加一个值 命令格式: SADD key member [member1 member2 ...] SADD goods appl...

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

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

    MSchumi 评论0 收藏0

发表评论

0条评论

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