1、Map Set WeakMap 和WeakSet

  Map

  是一个键值对的集合,主要的方法包括:

  new Map() 创建Map

  map.set(key,value)  根据键(key)存储值(value).

  map.get(key)  根据键返回值,如果map中该值不存在,返回undefined

  map.has(key)   如果键值存在,返回true,否则返回false

  map.delete(key)  移除该键的值

  map.clear()      清空map

  map.size      返回当前元素个数

 let map = new Map();

 map.set('', 'str1');   // 字符串作为 key
map.set(, 'num1'); // 数字作为 key
map.set(true, 'bool1'); // 布尔值作为 key // 还记得普通对象 Object 吗?它将会把所有的键转化为字符串类型
// 但是 Map 将会保留键的类型,所以下面这两个是不同的:
alert( map.get() ); // 'num1'
alert( map.get('') ); // 'str1' alert( map.size ); //

  将Object转化为Map

  通过一个方法Object,entries(obj),它可以返回一个对象的键值对数组,如下

 let map = new Map(Object.entries({
name: "John",
age:
}));

  遍历Map

 let recipeMap = new Map([
['cucumber', ],
['tomatoes', ],
['onion', ]
]); // 迭代键(vegetables)
for (let vegetable of recipeMap.keys()) {
alert(vegetable); // cucumber, tomatoes, onion
} // 迭代值(amounts)
for (let amount of recipeMap.values()) {
alert(amount); // 500, 350, 50
} // 迭代键值对 [key, value]
for (let entry of recipeMap) { // 和 recipeMap.entries() 一样
alert(entry); // cucumber,500(等等)
}
recipeMap.forEach( (value, key, map) => {
  alert(`${key}: ${value}`); // cucumber: 500 等等
});

  Set

  Set 是一个值得集合,这个集合中的所有的值仅出现一次

  主要方法包括:

  new Set()  创建Set,利用数组创建是可选的(任何迭代对象都可以)

  set.add(value)  添加值,返回set本身

  set.delete(value)  删除值,如果该value在调用方法的时候存在则返回true,否则返回false。

  set.has(value)  如果set中存在该值则返回true,否则返回false。

  set.clear()    清空set

  set.size  元素的个数

  Set 迭代

  for ... of  或者 forEach

 let set = new Set(["oranges", "apples", "bananas"]);

 for (let value of set) alert(value);

 // 和 forEach 相同:
set.forEach((value, valueAgain, set) => {
alert(value);
});

  WeakMap 和 WeakSet  

  WeakMap 仅有如下方法:

  • weakMap.get(key)
  • weakMap.set(key, value)
  • weakMap.delete(key, value)
  • weakMap.has(key)

  WeakSet同理

   这两者的键必须是对象

 let weakMap = new WeakMap();

 let obj = {};

 weakMap.set(obj, "ok"); // 运行正常(对象作为键)

 weakMap.set("test", "Whoops"); // 错误,因为“test”是原始类型

2、Json 方法

   Json.stringify  将对象转换为json 完整语法:let json = JSON.stringify(value[, replacer, space])

  Json.parse 将Json 转换为对象 语法:let value = JSON.parse(str[, reviver]);

let student = {
name: 'John',
age: ,
isAdmin: false,
courses: ['html', 'css', 'js'],
wife: null
}; let json = JSON.stringify(student); alert(typeof json); // we've got a string! alert(json);
/* JSON-encoded object:
{
"name": "John",
"age": 30,
"isAdmin": false,
"courses": ["html", "css", "js"],
"wife": null
}
*/
 // a number in JSON is just a number
alert( JSON.stringify() ) // 1 // a string in JSON is still a string, but double-quoted
alert( JSON.stringify('test') ) // "test" alert( JSON.stringify(true) ); // true alert( JSON.stringify([, , ]) ); // [1,2,3]
 // stringified array
let numbers = "[0, 1, 2, 3]"; numbers = JSON.parse(numbers); alert( numbers[] ); //
 let user = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';

 user = JSON.parse(user);

 alert( user.friends[] ); //

javaScript 基础知识汇总(八)的更多相关文章

  1. JavaScript基础知识汇总

    1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...

  2. javaScript 基础知识汇总(三)

    1.循环:while 和 for while 循环 while(condition){ //代码 循环体 } do ... while  循环 let i =0; do { //循环体 }while( ...

  3. javascript基础知识 (八) BOM学习笔记

    一.什么是BOM      BOM(Browser Object Model)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管理窗口 ...

  4. javaScript 基础知识汇总(六)

    1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number  boolean  symbol  null  undefined 对 ...

  5. javaScript 基础知识汇总(五)

    1.垃圾回收 JavaScript 的内存管理是自动的,不能强制执行或者阻止执行 可达性 JavaScript中主要的内存管理概念是可达性. 什么是可达性? 定义一个对象 let user = { n ...

  6. javaScript 基础知识汇总(二)

    1.运算符 术语或者叫法:一元运算符.二元运算符.运算元(参数) let x=0; x=5+2; //5和2为运算元,“+” 为二元运算符: x=-x; //"-" 为一元运算符 ...

  7. javascript 基础知识汇总(一)

    1.<script> 标签 1) 可以通过<script> 标签将javaScript 代码添加到页面中 (type 和language 属性不是必须的) 2)外部的脚本可以通 ...

  8. JavaScript 基础知识汇总目录

    一.标签.代码结构.现代模式.变量.数据类型.类型转换 GO 二.运算符.值的比较.交互.条件运算符.逻辑运算符 GO 三.循环 while 和 for .switch语句.函数.函数表达式和箭头函数 ...

  9. javaScript 基础知识汇总 (十三)

    1.Class 在JavaScript中 calss即类是一种函数 基本语法 class Myclass{ constructor(){} method1(){} method2(){} method ...

随机推荐

  1. group compare vs pair compare

    成对总体检验是令y1=x11-x12:y2=x21-x22等,令新的随机变量y去做假设检验.此方法适用于排除物理因素影响,对差异更敏感,所以适用于小样本.而使用两个总体均值比较的方法适用于大样本.

  2. A - Divide it! CodeForces - 1176A

    题目: You are given an integer nn. You can perform any of the following operations with this number an ...

  3. vue日常问题总结

    1.Vue项目启动后首页URL带的#该怎么去掉? vue-router中默认使用的是hash模式,URL中带有#号,我们可以用如下代码修改成history模式: import Vue from 'vu ...

  4. js中escape的用法

    escape() 方法,它用于转义不能用明文正确发送的任何字符.比如,电话号码中的空格将被转换成字符 %20,从而能够在 URL 中传递这些字符.   var s="http://local ...

  5. 翻译:谷歌HTML、CSS和JavaScript风格规范

    我喜欢浏览风格规范.他们通常有明显的规则,虽然有些有荒诞之感,但是却可以发现之前未注意到的宝石.不幸的是,鲜有公司有这个勇气来发布自己内部的风格规范.BBC 2010年时候公开其文档以及Google最 ...

  6. Drools 7.15.0 docker容器方式部署

    关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...

  7. NSURLSession与NSURLConnection区别

    1. 使用现状      NSURLSession是NSURLConnection 的替代者,在2013年苹果全球开发者大会(WWDC2013)随ios7一起发布,是对NSURLConnection进 ...

  8. Spring Boot框架开发的Java项目在CentOS7上的部署

    需求:上级拿来一份Spring Boot框架开发的Java项目代码让我在服务器上运行起来,只说了一句该框架是自带了Tomcat(不用重新安装Tomcat),一份代码下有两个项目(一个管理端项目,一个用 ...

  9. 添砖加瓦:Linux系统监测

    前言 前段时间因为项目需求,需要实时获取系统当前的运行状态,遂查阅了不少资料,基于/proc目录下的部分文件,实现了系统CPU.内存.网络和磁盘的实时监测. 一.CPU使用情况获取 获取CPU使用情况 ...

  10. 添砖加瓦:[OpenCV]入门(一)

    1.OpenCV安装 (1)下载: 本文采用的是源码的方式进行安装,源码可以从OpenCV官网下载.这里以3.4.1为例. (2)安装 这里下载到的文件为3.4.1.zip."unzip 3 ...