获取与模式匹配的所有 JSON 键

Posted

技术标签:

【中文标题】获取与模式匹配的所有 JSON 键【英文标题】:Get all JSON keys that match a pattern 【发布时间】: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 语法。 【参考方案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);

【讨论】:

以上是关于获取与模式匹配的所有 JSON 键的主要内容,如果未能解决你的问题,请参考以下文章

具有精确键列表的模式匹配映射

vscode package.json 字符串与模式不匹配

如何从redis-cli repl中删除Redis匹配模式中的所有键?

列出与R中的完整路径模式匹配的所有文件

删除文件中与模式不匹配的行

键模式中的属性数必须与属性定义中定义的属性数匹配