是否可以检查JS Map是否包含值并让其返回其键 [英] Is it possible to check if a JS Map contains a value and have it return its key

查看:34
本文介绍了是否可以检查JS Map是否包含值并让其返回其键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试寻找一种方法来查看Map数组值,以查看它是否确实将Map键作为变量返回.由于我没有做太多的javascript,这让我有些难过.

I'm trying to find a way to look into a Map array value to see if it exists if it does return the Map key as a variable. this has stumped me for a bit now as I don't do much javascript.

const map = new Map([
        ["KEY1", ["dummy1","dummy2","dummy3"]],
        ["KEY2", ["dummy4","dummy5","dummy6","dummy7"]],
        ["KEY3", ["dummy8","dummy9"]],
    ]);

所以说我有dummy4作为变量,我想在map中查看,并在其中看到带有key2的值数组,然后将密钥返回到字符串"KEY2"的新变量中.

so say I have dummy4 as a var I want to look in map and see it there in the array of values with key2 and return the key into a new variable of sting "KEY2"

推荐答案

我正在用这种方式搜索可能包含多个术语的某个特定值,这可能不是最好的方法,因为我想出的基本上可以将许多值输入到输入中,但是所有这些都与只有一个输出

基于评论,我将推荐一种不同的方式来构建您的查找结构-

Based on a comment, I'm going to recommend a different way to build your lookup structure -

const terms =
  [ ["KEY1", ["dummy1","dummy2","dummy3"]]
  , ["KEY2", ["dummy4","dummy5","dummy6","dummy7"]]
  , ["KEY3", ["dummy8","dummy9"]]
  ]
  
const dict =
  new Map(terms.flatMap(([ k, vs ]) => vs.map(v => [ v, k ])))
  
console.log(dict.get("dummy2"))
console.log(dict.get("dummy5"))
console.log(dict.get("dummy7"))
console.log(dict.get("dummy9"))
console.log(dict.get("dummy0"))

输出-

KEY1
KEY2
KEY2
KEY3
undefined

效率更高,因为Map结构提供了对任何值的即时查找,并且不需要完整的 .entries 扫描-

This is more efficient because the Map structure provides instant lookup for any value and does not require a full .entries scan -

Map
  { "dummy1" -> "KEY1"
  , "dummy2" -> "KEY1"
  , "dummy3" -> "KEY1"
  , "dummy4" -> "KEY2"
  , "dummy5" -> "KEY2"
  , "dummy6" -> "KEY2"
  , "dummy7" -> "KEY2"
  , "dummy8" -> "KEY3"
  , "dummy9" -> "KEY3"
  }

这篇关于是否可以检查JS Map是否包含值并让其返回其键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆