如何检查Javascript上的MAP中是否存在值?

Fer*_*one 5 javascript

这看起来是一个非常简单的问题,但是我没有在任何地方找到它。

我如何知道地图中是否存在值?

例如:

A = [1,2,3,5,6,7]
var myMap = new Map();
    for (let i = 0; i < A.length; i++) {
        myMap.set(i,A[i]);
    }
    for (let z = 1; z < Number.MAX_SAFE_INTEGER; z++) {
        console.log(z);
        if(!myMap.hasValue(z)){
            return z;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想检查一下,给定一个值,这个值是否在哈希值上。就像“ hasValue”

Ber*_*rgi 15

除了通过搜索之外,您不能:

Array.from(myMap.values()).includes(val)
Run Code Online (Sandbox Code Playgroud)

改用适当的数据结构,例如一组所有值:

A = [1,2,3,5,6,7]
var myValues = new Set(A);

for (let z = 1; z < Number.MAX_SAFE_INTEGER; z++) {
    console.log(z);
    if(!myValues.has(z)) {
        return z;
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,鉴于您A已经排序,您可以直接迭代它以找到最低的缺失值。


Wik*_*awa 11

对我来说它有效:

Object.values(myMap).includes(myValue);
Run Code Online (Sandbox Code Playgroud)


Dar*_*rio 9

您可以在地图上使用迭代,查找值并在找到后立即返回 true(退出循环)。或者,如果元素不存在,则返回 false。就像是:

const findInMap = (map, val) => {
  for (let [k, v] of map) {
    if (v === val) { 
      return true; 
    }
  }  
  return false;
}
Run Code Online (Sandbox Code Playgroud)

  • `for (let v of map.values())` (10认同)