![](/img/trans.png)
[英]javascript ecma6 convert array items into an object of key value pairs
[英]Using ECMA6 Set as object key
有沒有辦法使用Set
as object 鍵
let x = {}
const a = new Set([3, 5])
x[a] = 1
console.log(x) // >{[object Set]: 1}
const b = new Set([1, 4])
x[b] = 2
console.log(x) // >{[object Set]: 2}
即使集合不相等,鍵也會被覆蓋。
謝謝!
不,這是不可能的,因為 Object 鍵必須是字符串或符號。 如果您想使用 Set 作為鍵,可以嘗試使用Map 。 地圖類似於對象,除了您可以使用其他對象作為 map 的鍵。
要記住的一件事是,您不能像使用對象一樣使用地圖。
這直接來自 Mozilla 文檔。 以下不是 MAP 的有效使用。
let wrongMap = new Map()
wrongMap['bla'] = 'blaa'
wrongMap['bla2'] = 'blaaa2'
console.log(wrongMap) // Map { bla: 'blaa', bla2: 'blaaa2' }
但是這種設置屬性的方式不會與 Map 數據結構交互。 它使用通用 object 的特性。 'bla' 的值未存儲在 Map 中以供查詢。 對數據的其他操作失敗:
正確使用 map 如下所示:
let map = new Map()
// setting values
map.set(key, value)
// getting values
map.get(key)
請記住,如果您使用 Object 之類的 Set 作為鍵,則 Set 的引用很重要。
如果分別實例化兩個集合,即使它們的內容相同,它們也會有不同的引用,並被認為是不同的鍵。
你的意思是這樣的ES6
中的map
:
x = new Map() a = new Set([3, 5]) x.set(a, 1) console.log(x);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.