我正在尝试使用map
而不是对象来获取某些我希望拥有复杂键的数据。由于我可以使用一个对象作为地图中的一个键,这对我来说比拥有一个字符串化和连接键的对象键更清晰,例如,
const datum = {
large: 'chunk',
of: 'data'
}
const ids = [10797, 11679, 10679, 10160, 11681, 01802]
const view = 142171
const selectedDateRange = 'ONE_MONTH'
const objKey = {
ids,
view,
selectedDateRange
}
const data = new Map()
data.set(objKey, datum)
console.log(data.get(objKey)) // this works and i see the data
const objKeyRef = objKey
console.log(data.get(objKeyRef)) // also works and i see the data
但是,如果get
的密钥没有===
设置的密钥,则无效。
data.get({
ids,
view,
selectedDateRange
}) // undefined
这在the documentation中很明显(虽然我没有真正看到它解释了原因)。我想知道是否有办法绕过它。我希望能够在以后编写密钥并从地图中获取它们的价值。
===
密钥用于set
的对象?答案 0 :(得分:0)
如果对象是可序列化的,则可以JSON#stringify
该对象。因为它是一个字符串,所以当你将来组装它时我们会工作。
const datum = {
large: 'chunk',
of: 'data'
}
const ids = [10797, 11679, 10679, 10160, 11681, 01802]
const view = 142171
const selectedDateRange = 'ONE_MONTH'
const objKey = {
ids,
view,
selectedDateRange
}
const data = new Map()
data.set(JSON.stringify(objKey), datum)
const result = data.get(JSON.stringify({
ids,
view,
selectedDateRange
}))
console.log(result)