检查地图中是否存在密钥

时间:2019-08-20 04:54:04

标签: javascript

我读到要检查 地图 中是否存在密钥,我们可以使用 has 方法 我正在使用以下示例:

var mp = new Map();
mp["abc-def"] = 123;
if (mp.has("abc-def")) {
  console.log("found");
} else {
  console.log("not found");
}

关于为什么 方法在这里不起作用的任何建议?

4 个答案:

答案 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)

尝试使用mp["abc-def"] = 123;这样的.set方法进行设置,而不是mp.set("abc-def", 123)来检查密钥是否存在,您可以像这样使用.has

if (mp.has("abc-def")) {
  console.log("found");
} else {
  console.log("not found");
}