【问题标题】:Retrieving value from an object using regex - JS [closed]使用正则表达式从对象中检索值 - JS [关闭]
【发布时间】:2022-01-21 21:52:36
【问题描述】:

是否可以通过键上的正则表达式从对象中提取值?

示例:

var map= {"xxx_yyy":{///some props}};

var receiverId = "xxx";

var regex = new RegExp(`${receiverId}_[^\\n]`);

我想要这样的东西:

map[regex]

亮点:

  • 在构建地图对象时,我没有为重复的 xxx_ 提供选项(例如:如果我有 xxx_yyy,则不会发生 xxx_zzz - 所以正则表达式 xxx_[ANYTHING] 是唯一的)
  • 我不想使用循环,因为那样我就失去了构建为一种哈希表的对象的效果。

【问题讨论】:

  • 你试过了吗?
  • 没有办法寻找部分键匹配,除了迭代。
  • @CinCout - 是的 - 不能那样工作
  • @CBroe 这正是我上传问题的原因 - 也许有人确实知道一种方法
  • @CBroe - 我们找到了方法 - 检查答案

标签: javascript regex hashtable


【解决方案1】:
for (const [key, value] of Object.entries(map)) {
  if(regex.test(key))
  {
      // key matches the regex: do whatever you would like
  }
}

【讨论】:

    【解决方案2】:

    有效 - 我们将整个对象转换为 STRING 并通过正则表达式搜索其中的 KEY - 然后我们根据完整的 KEY 提取值(无循环:))

    var map= {"xxx_yyy":{status:"a"}};
    var receiverId = "xxx";
    var regex = new RegExp(`"${receiverId}_[^\\n]+?"`,"g");
    var mapString = JSON.stringify(map);
    var match = mapString.match(regex);
    if(match[0])
    
    {
        var key = match[0].replace(/"/g,"");
        var val = map[key];
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 2017-11-13
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多