javascript通过使用正则表达式匹配键从JSON对象检索值
javascript retrieve value from JSON object by matching key using Regex
我有以下javascript对象文字(摘录)
var foo = {"hello[35]":100,"goodbye[45]":42};
我有以下查询:
var query = "hello"
我想调用foo[query]来获取值100,但是有一个[35]我不一定知道它的值。我确信我会得到一个独一无二的匹配。是否有任何方式输入查询是某种javascript正则表达式?例如
Regex = /hello/
foo[Regex]
100
你这里有什么:
var foo = {"hello[35]":100,"goodbye[45]":42};
是而不是 JSON,它是一个对象的字符串表示;您所拥有的是一个对象字面量,它创建了一个实际的JavaScript对象。据我所知,通过匹配属性名和正则表达式从对象中检索值的唯一方法是枚举属性名并测试每个属性名。您需要的正则表达式类似于:
/^hello('['d*'])?$/
…它将匹配"hello",可选地在方括号中后跟零个或多个数字。但是你不想硬编码"hello",因为你也(大概)需要"goodbye"的值,所以使用一个函数:
function getPropertyByRegex(obj,propName) {
var re = new RegExp("^" + propName + "(''[''d*''])?$"),
key;
for (key in obj)
if (re.test(key))
return obj[key];
return null; // put your default "not found" return value here
}
var foo = {"hello[35]":100,"goodbye[45]":42};
alert(getPropertyByRegex(foo, "hello")); // 100
alert(getPropertyByRegex(foo, "goodbye")); // 42
alert(getPropertyByRegex(foo, "whatever")); // null (not found)
演示:http://jsfiddle.net/asDQm/
不确定是否可以使用regex没有任何插件之类的…这可能已经有帮助了…
var foo = {"hello[35]":100,"goodbye[45]":42};
var query = "hello";
for(var key in foo){
if (key.indexOf(query) > -1)
document.write(foo[key]);
}
http://jsfiddle.net/3qqSr 我在这里也是新手,但我以前看过这个页面,看到它可以帮助你解决你的问题。它主要解释JSon路径。
由于JSON是字符串,因此可以使用regexp来执行以下语句:
var foo = '{"hello[35]":100,"goodbye[45]":42}';
var result = foo.match(/"hello'['d*']":'d*/g);
result = result[0].split(":")[1];
alert(result);
在jsfiddle上观看
请注意,您可以在regexp中使用var来代替"hello"。
var foo = {"hello[35]":100,"goodbye[45]":42};
foo = foo.replace(/'['d+']/g,'');
var obj = (new Function("return "+foo))();
obj.hello -> 100
obj.goodbye -> 42
var query = 'hello';
obj[query] -> 100
function getVal(s, q){
var r = s.match(new RegExp(q + "''[''d*'']'":(''d*)['',''}]"));
return r?r.pop():false;
}
getVal(foo, "hello")
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象