【问题标题】:Get all JSON keys that match a pattern获取与模式匹配的所有 JSON 键
【发布时间】:2016-01-18 00:47:19
【问题描述】:

浏览器环境中的Javascript。我希望获取与特定模式匹配的 JSON 对象中的所有键。比如说,所有这些都以mystring 开头。有没有一种更简单/有效的方法来做到这一点而不必遍历所有的键?

{
   somekey1: "someval1",
   somekey2: "someval2",
   mystringkey1: "someval",
   mystringkey2: "someval"

}

曾经有类似的questions,但是a) 没有完全回答这个问题,b) JQuery 目前不是一个选项。

【问题讨论】:

  • 更简单/有效的方法是迭代键。
  • 当然,您只需执行for (... in ..),然后每次都针对正则表达式进行测试...
  • 这看起来像一个 JavaScript 对象,但不是 JSON。
  • @WashingtonGuedes 是的,这就是它的名字。但是 JSON 有不同的语法,与 JavaScript 兼容,但又不一样。在这种情况下,名称缺少引号。
  • @WashingtonGuedes OP的代码不符合JSON语法;它不是 JSON。但是,它确实符合对象的 JavaScript 语法。

标签: javascript json regex


【解决方案1】:

如 cmets 中所述,遍历您的对象并在找到匹配键时添加到结果中。

var data = {
   somekey1: "someval1",
   somekey2: "someval2",
   mystringkey1: "someval",
   mystringkey2: "someval"
}

var filtered = {}

for (key in data) {
    if (key.match(/^mystring/)) filtered[key] = data[key];
}

console.log(filtered)

【讨论】:

    【解决方案2】:

    使用Object.keysfilter

    var myObj = {
      somekey1: "someval1",
      somekey2: "someval2",
      mystringkey1: "someval",
      mystringkey2: "someval"
    
    };
    
    var pattern = /^mystring/;
    var matchingKeys = Object.keys(myObj).filter(function(key) {
      return pattern.test(key);
    });
    
    console.log(matchingKeys);

    【讨论】:

      猜你喜欢
      • 2015-11-05
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2017-07-26
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多