我有以下 javascript 对象文字(摘录)
var foo = {"hello[35]":100,"goodbye[45]":42};
我有以下查询:
var query = "hello"
我想调用 foo[query] 来获取值 100,但是有一个 [35] 我不一定知道它的值。我确信我会得到一场独特的比赛。有什么方法可以输入某种javascript正则表达式的查询吗? IE。
Regex = /hello/
foo[Regex]
100
原谅菜鸟问题...
你这里有什么:
var foo = {"hello[35]":100,"goodbye[45]":42};
is notJSON,它是对象的字符串表示形式;你拥有的是一个对象字面量,它创建一个实际的 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)
Demo: http://jsfiddle.net/asDQm/ http://jsfiddle.net/asDQm/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)