[英]Javascript how to retrieve value from a Map that has an EnumValue as key
我在 Javascript 中查詢一個數據庫,在那里我得到一個 Map 對象。 問題是映射中某個條目的鍵是一個對象,准確地說是 EnumValue。
我似乎找不到直接檢索此類條目的方法。 我唯一想到的是迭代地圖的每個鍵並檢查它是否是一個對象。
所以,如果我 console.log 從查詢中得到的輸出,它看起來像這樣:
Map {
EnumValue { typeName: 'T', elementName: 'label' } => 'user',
'gender' => [ 'f' ],
'identityid' => [ '2349fd9f' ],
'name' => [ 'Erika' ],
'email' => [ 'test1@test.com' ],
EnumValue { typeName: 'T', elementName: 'id' } => 4136,
'lastname' => [ 'Delgato' ]
}
我已經天真地嘗試使用這樣的東西來獲取條目:
const enumId = { typeName: 'T', elementName: 'label' };
map.get(enumId)
但當然它返回未定義。
有任何想法嗎?
因此,為了節省其他遇到此問題的人的時間,我將在此處編寫解決方案。
此問題特定於使用 gremlin javascript 客戶端(此處使用 3.4.2 版)在 Janusgraph 數據庫中檢索值。
將 valueMap(true) 附加到遍歷時,結果是我發布的問題中的那個。 通過 gremlin 庫,我發現在 gremlin.process.t 的對象 t 中可以找到這個 EnumValues:
id
key
label
value
然后使用 id 或標簽可以直接檢索那些討厭的鍵的值。
一個例子:
// Let's say we already have the Map from the question stored in a map variable
// To get the id of the result you can do the following
const t = gremlin.process.t;
const id = map.get(t.id);
console.log(id) // 4136
映射在 javascript 工作參考。 它不做深度比較,只檢查指針是否相同。 這將不起作用:
var x = new Map()
x.set({},'lala')
x.get({}) // undefined
但這會起作用:
var x = new Map()
var player = {name: 'ben'}
x.set(player, 50)
x.get(player) // 50
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.