获取与模式匹配的所有 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.keys 和filter
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 键的主要内容,如果未能解决你的问题,请参考以下文章