я могу установить регулярное выражение для селектора метода / свойства объекта? - PullRequest
1 голос
/ 03 июня 2011
var regxp = /[\S]/; //any char, not sure if it's /.*/ or something else
var obj = {
 atr1: "bla"
}
var blahs = obj[regxp]; //returns atr1

Я ищу ярлык для получения имен методов / свойств от объекта, потому что for..in медленнее по сравнению с циклом for, например.Я хочу это для особого случая, когда я знаю, что у объекта будет только один метод / свойство

Ответы [ 3 ]

4 голосов
/ 03 июня 2011

Да , вы можете попытаться получить доступ к свойству объекта с помощью регулярного выражения, но нет , он не будет делать то, что вы хотите: он преобразует регулярное выражение вСтрока и используйте это имя свойства.

Единственный способ найти имя свойства объекта путем сопоставления с регулярным выражением - это цикл for ... in, как вы упомянули.Производительность не должна быть проблемой, если объект имеет только одно свойство.

function findPropertyNameByRegex(o, r) {
  for (var key in o) {
    if (key.match(r)) {
      return key;
    }
  }
  return undefined;
};
findPropertyNameByRegex(obj, regxp); // => 'atr1'
0 голосов
/ 03 июня 2011

Если у вас есть только одно свойство, вы можете быть уверены, что for..in не будет медленным.

0 голосов
/ 03 июня 2011

Ваше регулярное выражение будет соответствовать одному непробельному символу.

for...in - это цикл.это медленнее чем что конкретно?Вы тестировали?

Если вы хотите искать свойства с помощью регулярных выражений, вам придется делать это в цикле.

for(var k in obj) {
    if(regexp.match(k)) {
      // do whatever
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...