簡體   English   中英

使用 ECMA6 設置為 object 密鑰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM