【问题标题】:Check if a string is contained within a specific Map() key检查字符串是否包含在特定的 Map() 键中
【发布时间】:2018-09-29 18:57:43
【问题描述】:

我有一张从 json 文件中填充的地图,类似于以下内容

key: ConfigItem
value: Var1,Var2,Var3


key: ConfigItem2
value: Var1,Var2,Var3,var4


key: ConfigItem3
value: true

我希望能够运行 if 语句来检查值是否包含在“ConfigItem”键中,如果是,则执行一些操作。

我查看了 map.get 和 map.has,但我似乎无法弄清楚如何搜索特定键并在它包含特定值时返回。

【问题讨论】:

  • 如果您需要,则无法自定义地图使用的相等算法。但是,您可以迭代一个 keys 属性。如果您的配置存储为 JSON,那么您根本不应该使用 Map...
  • @AluanHaddad 是的,配置存储为 json,但是我想要一个地图,以便我可以在运行时更新值而无需重新加载 app.js
  • 地图不提供类似的东西。如果您需要从文件中刷新配置,您可以使用 nodejs 应用程序中的文件系统或在浏览器应用程序中发出 http 请求
  • 如果您向我们展示实际代码而不是伪代码,我们可能会为您提供更好的帮助。如果您的特定键的值是一个数组,请使用类似于 How do I check if an array includes an object in JavaScript? 中的内容。
  • 你到底存储了什么值,数组?逗号分隔的字符串?

标签: javascript node.js es6-map


【解决方案1】:

你似乎在寻找

const map = new Map([
    ["ConfigItem", ["Var1","Var2","Var3"]],
    ["ConfigItem2", ["Var1","Var2","Var3","var4"]],
    ["ConfigItem3", true],
]);

if (map.get("ConfigItem").includes("Var2")) {
    …
}

请注意,这只是使用Map get 来访问ConfigItem 键的数组值,然后使用普通的Array includes method 来检查其中是否包含特定字符串。

【讨论】:

  • @MohammedEssehemy 看来 OP 已经知道他的地图有 ConfigItem 的条目。
  • 我认为如果他不确定密钥是否存在会更安全。但如果是你描述的情况,那就完全没问题了。
猜你喜欢
  • 1970-01-01
  • 2012-10-25
  • 2013-12-23
  • 2020-04-17
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2010-12-20
相关资源
最近更新 更多