zoukankan      html  css  js  c++  java
  • javaScript 基础知识汇总(八)

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

      将Object转化为Map

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

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

      遍历Map

     1 let recipeMap = new Map([
     2   ['cucumber', 500],
     3   ['tomatoes', 350],
     4   ['onion',    50]
     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]);

    let student = {
      name: 'John',
      age: 30,
      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
    }
    */
    1 // a number in JSON is just a number
    2 alert( JSON.stringify(1) ) // 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,2,3]
    1 // stringified array
    2 let numbers = "[0, 1, 2, 3]";
    3 
    4 numbers = JSON.parse(numbers);
    5 
    6 alert( numbers[1] ); // 1
    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[1] ); // 1
  • 相关阅读:
    JavaBean 与 EJB 的区别
    MFC选项卡的实现
    MFC的图片按钮
    windows 下使用 MinGW + msys 编译 ffmpeg
    在windows使用vs2008编译live555
    C89 和 C99 标准比较
    11.求二元查找树的镜像[MirrorOfBST]
    10.排序数组中和为给定值的两个数字[Find2NumbersWithGivenSum]
    9.链表中倒数第k个结点[FindReverseKthLinkedListNode]
    8.另类方法求1+2+...+n[AnotherMethodOfCalculateSumN]
  • 原文地址:https://www.cnblogs.com/xiaoqiyaozou/p/11481821.html
Copyright © 2011-2022 走看看