【问题标题】:Search one map value if it is a key of other map如果它是另一个映射的键,则搜索一个映射值
【发布时间】:2014-02-05 02:01:54
【问题描述】:

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

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

【问题讨论】:

  • 微不足道。你试过什么?
  • 我是多地图操作新手

标签: javascript search map key key-value


【解决方案1】:

您可以使用for..in 循环

var key;
for (key in map2)
    if (map2[key] in map1)
        map2[key] = map1[map2[key]];

您可能需要考虑如果属性被继承会发生什么

【讨论】:

  • 您可以使用hasOwnProperty() 来检查继承的属性。但没关系,因为 OP 使用的是非常普通的对象。
  • @bits 这不是 必须for (var key in {}) k; // undefined 它取决于 Object - 我提到可能需要考虑继承的属性,但是是的,hasOwnProperty 将是检查这些情况的方法。
  • 是的,不是must,我同意并更改了我上次的评论。
  • 如果你也很担心继承的属性,你可能还想通过Object.prototype调用它,例如var checkOwn = Object.prototype.hasOwnProperty.bind(testObj); checkOwn(someKey);
【解决方案2】:
Object.keys(map2).forEach(function (d, i) {
    map2[d] = map1[map2[d]];
})

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-08-26
  • 2019-10-07
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
相关资源
最近更新 更多