我有一个映射结构,其中键是数组,值是对象。
$(document.body).on('click', '.more_info' ,function(){
var dealid = ($(this).attr('id'));
$("#info"+dealid).show(1000);
});
如何通过一键获取对象的值?
例如,如何通过键“ _1030003”获取“ floor”的值?
我的提供商store.ts:
myMap = new Map();
myMap.set(["_1030002", "_1030003"], { name: "Yayay", description: "aaa", floor: -3});
答案 0 :(得分:2)
您可以使用keys()
方法。 keys()
方法returns
是一个新的 Iterator 对象,该对象按插入顺序包含Map
对象中每个元素的键。 / p>
由于返回了Iterator
对象,因此您需要使用Array.from
方法。
我们需要使用includes
方法来查找包含问题中的键map's
的{{1}}键。
_1030003
您遇到的另一个问题是您没有正确处理异步请求。由于myMap = new Map();
myMap.set(["_1030002", "_1030003"], { name: "Yayay", description: "aaa", floor: -3});
let keys = Array.from(myMap.keys());
let key = keys.find(key => key.includes("_1030003"));
console.log(myMap.get(key).floor);
操作是异步执行的,因此get
将在请求调用完成之前执行。
一种解决方案可能是使用回调函数。
console.log(this.JsonStoresData);