1. 程式人生 > 實用技巧 >js物件和map的區別

js物件和map的區別

看一道物件和map的題:

  function test1(){
      var a={},b='123',c=123;
      a[b]="b";
      a[c]="c";
      console.log('a :>> ', a);// {123:"c"}
      console.log('a[b] :>> ', a[b]);
      // 斷言 c 
      // 正確
    }
    function test2(){
      var a={};
      var b = Symbol('123')
      var c = Symbol('123')
      a[b]
='b' a[c]='c' console.log('a :>> ', a);//{SSymbol(123):'b',Symbol(123):'c'} console.log('a[b] :>> ', a[b]); // 斷言 b // 正確 } function test3(){ var a={}; var b = {key:'123'} var c = {key:'456'} a[b]='b' a[c]='c' console.log(
'a :>> ', a);// {[Object Object]:"c"} console.log('a[b] :>> ', a[b]); // 斷言 c // 正確 } // test1() // test2() // test3()

然後問 如果把物件換成Map結果是什麼樣的?

    function test11(){
      var a=new Map(),b='123',c=123;
      a.set(b,"b")
      a.set(c,"c")
      console.log('a :>> ', a);//
臥槽 console.log('a[b] :>> ', a.get(b)); // 斷言 b // 結果 b } function test22(){ var a=new Map(); var b = Symbol('123') var c = Symbol('123') a.set(b,"b") a.set(c,"c") console.log('a :>> ', a);// wc console.log('a[b] :>> ', a.get(b)); // 斷言 b // 正確 } function test33(){ var a=new Map(); var b = {key:'123'} var c = {key:'456'} a.set(b,"b") a.set(c,"c") console.log('a :>> ', a);// wc console.log('a[b] :>> ', a.get(b)); // 斷言 b // 結果 b } test11() test22() test33()

然後截圖看看a吧:

最後想說的是:

物件和Map的區別就是:

  物件的key是字串或者是Symbol,map的key可以是任何型別;

  用法不一樣,你要還是a[b]="b",這樣賦值取值 ,那結果不會變和物件時一樣。

over