2017-04-10 41 views
0

我想知道如果下面就可以在JavaScript/ES6做另一種方式:替代ES6地圖

var myMap = new Map(); 
myMap.set("id1", {"name": "John", "address":"near"}); 
myMap.set("id2", {"name": "Úna", "address":"far away"}); 

myMap.set("id2", {"name": "Úna", "address":"near"}); 

我是新來的JavaScript和對象歷來被用作地圖文檔中的已閱讀地圖。上述可以使用對象完成嗎?我真的不喜歡我必須使用setget

回答

2

只要鍵值僅僅是字符串,只需更換一個簡單的對象映射(你已經做到了與值,您提供):

// init object 
let myMap = { 
    "id1": {"name": "John", "address":"near"}, 
    "id2": {"name": "Úna", "address":"far away"} 
}; 

// add/replace 
myMap.id2 = {"name": "Úna", "address":"near"}; 

// access 
console.log(myMap.id2); 

一個地圖的優勢是,你可以使用任意對象作爲關鍵值。在那些將被轉換爲字符串的對象中,這往往不會導致有意義的表示。

0

當然可以,你有什麼基本上是

let obj = { 
    id1: {"name": "John", "address":"near"}, 
    id2: {"name": "Úna", "address":"far away"} 
} 

注意,以及在地圖和對象也設置兩次鍵時,鑰匙會互相覆蓋。在嚴格模式下,這甚至會成爲對象的錯誤。

+0

究竟會發生什麼錯誤? – 2017-04-10 08:49:06

+0

設置密鑰兩次是嚴格模式下的錯誤@torazaburo – baao

+0

是否在單個對象字面值中包含兩次相同的密鑰?我不認爲這是一個錯誤。至少不是當我嘗試它時。 – 2017-04-10 08:54:41