迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

使用 JavaScript 检查 Map 是否具有对象键

作者:迹忆客 最近更新:2022/12/01 浏览次数:

要检查 Map 是否具有对象键,请调用 has() 方法,将对象的引用传递给它,例如 map.has(obj)。 如果对象键包含在 Map 中,则 has() 方法将返回 true,否则返回 false

const obj = {country: 'Chile'};

const map1 = new Map([[obj, {city: 'Santiago'}]]);

// ✅ ( BEST ) - With reference
console.log(map1.has(obj)); // 👉️ true
console.log(map1.get(obj)); // 👉️ {city: 'Santiago'}

// -------

let hasKey = false;

for (const [key, value] of map1) {
  if (typeof key === 'object' && key.country === 'Chile') {
    hasKey = true;
    break;
  }
}

console.log(hasKey); // 👉️ true

我们使用 Map.has 方法来检查 Map 是否具有对象键。

请注意 ,我们通过引用 has() 方法传递了对象。 如果我们传递包含相同键/值对的对象,这将不起作用,因为它会存储在内存中的不同位置。

const obj = {country: 'Chile'};

const map1 = new Map([[obj, {city: 'Santiago'}]]);

console.log(map1.has({country: 'Chile'})); // 👉️ false

JavaScript 对象通过引用进行比较,而不是通过它们的内容进行比较。

// 👇️️ false
console.log({country: 'Chile'} === {country: 'Chile'});

// 👇️️ true
console.log(obj === obj);

如果我们没有对该对象的引用,请使用 for...of 循环遍历 Map 并检查对象键是否存在。

const map1 = new Map([[{country: 'Chile'}, {city: 'Santiago'}]]);

let hasKey = false;

for (const [key, value] of map1) {
  if (typeof key === 'object' && key.country === 'Chile') {
    hasKey = true;
    break;
  }
}

console.log(hasKey); // 👉️ true

for...of 循环遍历数组、字符串和映射等可迭代对象。

在每次迭代中,我们检查当前键是否是一个对象并包含等于智利的国家/地区属性。

如果不需要,则不必解构值变量。

在确认对象键存在后,我们使用 break 关键字退出循环,避免不必要的工作。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便