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      返回当前元素个数

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

  将Object转化为Map

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

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

  遍历Map

  1. let recipeMap = new Map([
  2. ['cucumber', ],
  3. ['tomatoes', ],
  4. ['onion', ]
  5. ]);
  6.  
  7. // 迭代键(vegetables)
  8. for (let vegetable of recipeMap.keys()) {
  9. alert(vegetable); // cucumber, tomatoes, onion
  10. }
  11.  
  12. // 迭代值(amounts)
  13. for (let amount of recipeMap.values()) {
  14. alert(amount); // 500, 350, 50
  15. }
  16.  
  17. // 迭代键值对 [key, value]
  18. for (let entry of recipeMap) { // 和 recipeMap.entries() 一样
  19. alert(entry); // cucumber,500(等等)
  20. }
    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

  1. let set = new Set(["oranges", "apples", "bananas"]);
  2.  
  3. for (let value of set) alert(value);
  4.  
  5. // 和 forEach 相同:
  6. set.forEach((value, valueAgain, set) => {
  7. alert(value);
  8. });

  WeakMap 和 WeakSet  

  WeakMap 仅有如下方法:

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

  WeakSet同理

   这两者的键必须是对象

  1. let weakMap = new WeakMap();
  2.  
  3. let obj = {};
  4.  
  5. weakMap.set(obj, "ok"); // 运行正常(对象作为键)
  6.  
  7. 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]);

  1. let student = {
  2. name: 'John',
  3. age: ,
  4. isAdmin: false,
  5. courses: ['html', 'css', 'js'],
  6. wife: null
  7. };
  8.  
  9. let json = JSON.stringify(student);
  10.  
  11. alert(typeof json); // we've got a string!
  12.  
  13. alert(json);
  14. /* JSON-encoded object:
  15. {
  16. "name": "John",
  17. "age": 30,
  18. "isAdmin": false,
  19. "courses": ["html", "css", "js"],
  20. "wife": null
  21. }
  22. */
  1. // a number in JSON is just a number
  2. alert( JSON.stringify() ) // 1
  3.  
  4. // a string in JSON is still a string, but double-quoted
  5. alert( JSON.stringify('test') ) // "test"
  6.  
  7. alert( JSON.stringify(true) ); // true
  8.  
  9. alert( JSON.stringify([, , ]) ); // [1,2,3]
  1. // stringified array
  2. let numbers = "[0, 1, 2, 3]";
  3.  
  4. numbers = JSON.parse(numbers);
  5.  
  6. alert( numbers[] ); //
  1. let user = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';
  2.  
  3. user = JSON.parse(user);
  4.  
  5. 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. SQL提高性能

    1.对外键建立索引,大数据量时性能提高明显(建索引可以直接[Merge Join],否则还须在查询时生成HASH表作[Hash Join]) 2.尽量少使用inner join,使用left join ...

  2. SpringMVC学习笔记九:拦截器及拦截器的简单实用

    SpringMVC中的interceptor拦截器是非常重要的,它的主要作用就是拦截指定的用户请求,并进行相应的预处理和后处理. 拦截时间点在"处理器映射器根据用户提交的请求映射出所要执行的 ...

  3. 吴裕雄--天生自然python编程:turtle模块绘图(4)

    import turtle bob = turtle.Turtle() for i in range(1,5): bob.fd(100) bob.lt(90) turtle.mainloop() im ...

  4. 将js进行到底:node学习6

    开始真正的node web开发--express框架 为何说现在才是web开发的真正开始呢? 首先任何企业都不会用原生的http协议API去开发一个完整的网站,除非她们先开发一个框架出来,其次我们之前 ...

  5. String.slice

    String.slice(start, end)start从字符串的哪个index开始截取 默认值0 如果为负值,则从字符串的尾部向前倒推indexend到从字符串的哪个index结束截取 默认值st ...

  6. shell的循环嵌套语法

    测试shell的循环嵌套语法 [root@localhost test]# vi Xunhuanqiantao.sh #!/bin/bash #程序功能描述: # 测试循环嵌套 #作者:孤舟点点 #版 ...

  7. Unique Snowflakes(窗口滑动)

    题目: Emily the entrepreneur has a cool business idea: packaging and selling snowflakes. She has devis ...

  8. “代码量统计脚本”

    概述 本文从一段统计C/C++程序脚本入手,记录shell脚本常用和重要的知识点. 代码量统计程序 文件名称,count_code_line.sh 12345678910111213141516171 ...

  9. ES6中Map数据结构学习笔记

    很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...

  10. iOS多线程之Thread

    多线程 • Thread 是苹果官方提供的,简单已用,可以直接操作线程对象.不过需要程序员自己管理线程的生命周期,主要是创建那部分 优缺点 面向对象,简单易用 直接操作线程对象 需要自己管理线程生命周 ...