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
  • 相关阅读:
    UPC12617 卡片
    mcmf的dijkstra板子(来自PHY学长)
    UPC9630 Mad Veterinarian
    UPC8173【 哈希和哈希表】Three Friends
    UPC9655 Plug It In!
    UPC8428 网格VI
    UPC4248【数论】数字迷阵
    UPC4247【数论】普通递归关系
    SPOJ
    hdu 5992 Finding Hotels (kdTree)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5126113.html
Copyright © 2011-2022 走看看