Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果一个地图值是另一个地图的键,则搜索该地图值_Javascript_Search_Map_Key_Key Value - Fatal编程技术网

Javascript 如果一个地图值是另一个地图的键,则搜索该地图值

Javascript 如果一个地图值是另一个地图的键,则搜索该地图值,javascript,search,map,key,key-value,Javascript,Search,Map,Key,Key Value,在javascript中,我有两个映射 map1={a:1,b:2,c:3,d:4,e:5}; map2={td:a,bd:c,sd:e} 现在我需要搜索map2的值,如果它是map1的键,那么它就是(a,b,e),然后用map1中相应的值更新map2的值 示例-map2[td]=a和map[a]=1,然后我想更新map2[td]=1。谁能帮我找到一个算法。你可以用一个循环 Object.keys(map2).forEach(function (d, i) { map2[d] = map

在javascript中,我有两个映射 map1={a:1,b:2,c:3,d:4,e:5}; map2={td:a,bd:c,sd:e}

现在我需要搜索map2的值,如果它是map1的键,那么它就是(a,b,e),然后用map1中相应的值更新map2的值 示例-map2[td]=a和map[a]=1,然后我想更新map2[td]=1。谁能帮我找到一个算法。

你可以用一个循环

Object.keys(map2).forEach(function (d, i) {
    map2[d] = map1[map2[d]];
})

您可能想考虑如果属性继承,尽管

微不足道。您尝试过什么?我不熟悉多个映射上的操作。这仅在ECMAScript 5+中受支持。我们在这里使用的是spider monkey javascript引擎。好吧。@cgatian几乎是您关心的任何浏览器。您可以使用
hasOwnProperty()
检查继承的属性。但这没关系,因为OP使用的是非常普通的对象。@bits这不是必须的,
for(var key in{})k;//未定义
这取决于对象-我提到可能需要考虑继承属性,但是是的,
hasOwnProperty
将是在这些情况下检查的方法。是的,不是
必须
,我同意并更改了我的上一条评论。如果你也真的担心继承属性,您可能还希望通过
Object.prototype
调用它,例如
var checkOwn=Object.prototype.hasOwnProperty.bind(testObj);checkOwn(someKey)
var key;
for (key in map2)
    if (map2[key] in map1)
        map2[key] = map1[map2[key]];