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
  • 相关阅读:
    Devexpress treeList
    sql rowversion
    2015年8月9日 开始 devsxpress 学习
    定时执行任务
    Dexpress 中 grid的使用
    新版 itextsharp pdf code
    jquery ui 中的插件开发
    Centos7下git服务器及gogs部署
    JAVA(TOMCAT)远程调试
    分布式文件系统笔记(慢慢补充)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5126113.html
Copyright © 2011-2022 走看看