zoukankan      html  css  js  c++  java
  • [ES6] Objects vs Maps

    Map is really useful when you want to use object as a key to set vaule, in ES5, you cannot really use object as a key:

    var user1 = {
      name: "Wan",
      age: 25
    };
    
    var user2 = {
      name: "Zhen",
      age: 27
    };
    
    var users = {};
    
    users[user1] = 5;
    users[user2] = 10;
    
    console.log(users);
    
    /**
    [object Object] {
      [object Object]: 10
    }
    **/

    As you can see, the output is always 10. It means the last value will overwrite the previous value.

    The reason for that is because in Javascript, when you use Array syntax to assign value, the 'key' is always 'string'.

    So if you use object 'user1', Javascript engine actually read it as 

    "[object Object]"

    In other words, no matter what object you give, the 'users' array has only one value:

    console.log(Object.keys(users));  // ["[object Object]"] 

    -------------------------------------------------

    Map in ES6 can help to solve the problem:

    var user1 = {
      name: "Wan",
      age: 25
    };
    
    var user2 = {
      name: "Zhen",
      age: 27
    };
    
    var users = new Map();
    
    users.set(user1, 5);
    users.set(user2, 10);
    
    console.log(users.get(user1));  // 5
    console.log(users.get(user2));  // 10
  • 相关阅读:
    sql优化
    一些有用的单词(1)
    用到的 Sed 注解
    终端工具注册码
    nginx四层、七层负载均衡配置示例
    http 状态码
    04. Golang 数据类型
    03. Golang 特性
    02. Go 命令
    01. GOPATH 目录结构划分的两种风格
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5126113.html
Copyright © 2011-2022 走看看