var regxp = /[\\S]/; //any char, not sure if it\'s /.*/ or something else
var obj = {
atr1: \"bla\"
}
var blahs = obj[regxp]; //returns atr1
I\'m
Yes, you can try to access a property of an object using a regular expression but no, it won't do what you want: it will convert the regex into a string and use that property name.
The only way to find a property name on an object by matching a regular expression is a for ... in
loop, like you mentioned. The performance should not be an issue if the object has only one property.
function findPropertyNameByRegex(o, r) {
for (var key in o) {
if (key.match(r)) {
return key;
}
}
return undefined;
};
findPropertyNameByRegex(obj, regxp); // => 'atr1'
your regex will match a single non-space character.
for...in
is a loop. it's slower than what exactly? have you benchmarked?
if you want to look up properties using a regex, you'll have to do it in a loop.
for(var k in obj) {
if(regexp.match(k)) {
// do whatever
}
}
If you have only one property, you can be pretty sure for..in
will not be slow.