Javascript 使用;在;JS中带有地图的关键字 让hMap=newmap(); for(设i=0;i

Javascript 使用;在;JS中带有地图的关键字 让hMap=newmap(); for(设i=0;i,javascript,hashmap,Javascript,Hashmap,if(hMap中的差异)如何工作?我试着用hMap.has(diff)替换它,但没有成功。贴图是一种特殊类型的对象,对象可以有与之关联的任意键值对。在这里,使用的hMap仅用于作为普通对象的功能,即(对象属性)键与值的关联。它没有被用作映射,因此代码容易混淆,这是可以理解的 如果代码是: let hMap = new Map(); for(let i = 0; i < nums.length; i++){ let diff = target - nums[

if(hMap中的差异)
如何工作?我试着用hMap.has(diff)替换它,但没有成功。

贴图是一种特殊类型的对象,对象可以有与之关联的任意键值对。在这里,使用的
hMap
仅用于作为普通对象的功能,即(对象属性)键与值的关联。它没有被用作
映射
,因此代码容易混淆,这是可以理解的

如果代码是:

let hMap = new Map();
    
    for(let i = 0; i < nums.length; i++){
        let diff = target - nums[i];
        
        if(diff in hMap)
           return [hMap[diff], i];
        hMap[nums[i]] = i;
    }
此时,应该很容易理解发生了什么:
hMap[nums[i]]=i
设置对象上的属性,hMap中的
diff
检查对象上是否存在该属性

如果要在本练习中使用贴图,则仅当使用贴图方法获取和设置值时才合适,这与普通对象的值完全不同:

let hMap = {};
您不能在中使用
来检查映射是否具有属性(由
Map.set
设置)-您只能使用
Map.has
来检查该属性


类似地,您不能使用
has
检查映射或其他表达式(或任何其他表达式)是否具有由
expression[prop]=someValue
设置的属性-要查找此类
prop
,您必须使用
中的
设置和获取映射条目时出错

要使用键添加值,需要调用方法

Map.set(键、值)

要通过键从映射中获取值,需要调用方法

var value=Map.get(键)

您的代码片段可以如下所示:

if (hMap.has(diff)) {
  return [hMap.get(diff), i];
}
hMap.set(nums[i]), i;
让hMap=newmap();
for(设i=0;i
我现在完全明白了。谢谢你的解释。这就把它清理干净了。谢谢。当回答解决了你的问题时,你可以考虑将投票和/或标记为接受(检查左边的复选框)以表明问题已经解决:)代码使用<代码> map < /Code >实例完全错误-它可以使用任何对象。看来作者不知道他们在做什么。
let hMap = new Map();
    
for(let i = 0; i < nums.length; i++){
    let diff = target - nums[i];
        
    if(hMap.has(diff)) return [hMap.get(diff), i];

    hMap.set(nums[i]) = i;
}