我读到要检查 地图 中是否存在密钥,我们可以使用 has 方法 我正在使用以下示例:
var mp = new Map();
mp["abc-def"] = 123;
if (mp.has("abc-def")) {
console.log("found");
} else {
console.log("not found");
}
关于为什么 有 方法在这里不起作用的任何建议?
答案 0 :(得分:4)
要在地图中设置密钥,您需要使用set
var mp = new Map();
mp.set("abc-def", 123)
if (mp.has("abc-def")) {
console.log("found");
} else {
console.log("not found");
}
如果使用.
或[]
设置属性,则仍然可以访问该属性,因为但不能使用has
函数,因为Map
也是一个对象,并且与任何其他对象相似您可以添加属性和访问的对象
var mp = new Map();
mp["abc-def"] = 123;
if (mp.hasOwnProperty("abc-def")) {
console.log("found");
} else {
console.log("not found");
}
没有在has
上出现但在[]
或.
上出现的原因是set
和{{1 }}方法从internal slot
DOCS Ref
答案 1 :(得分:2)
使用Map.prototype.set()
向Map对象添加或更新具有指定键和值的元素。
var mp = new Map();
mp.set("abc-def", 123);
if(mp.has("abc-def"))
{
console.log("found");
}
else{
console.log("not found");
}
答案 2 :(得分:1)
Check here
您应该为此使用set
Map.prototype.set(键,值) 设置Map对象中键的值。返回Map对象。
var map = new Map();
map.set("abc-def", 123)
if (map.has("abc-def")) {
console.log("key found");
} else {
console.log("key not found");
}
答案 3 :(得分:1)