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循環慢。 我想要這個特殊情況下,當我知道該對象將只有一個方法/屬性我可以爲對象的方法/屬性選擇器設置正則表達式嗎?
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循環慢。 我想要這個特殊情況下,當我知道該對象將只有一個方法/屬性我可以爲對象的方法/屬性選擇器設置正則表達式嗎?
是,你可以嘗試使用正則表達式,但沒有訪問對象的屬性,它不會做你想要的:它會在正則表達式轉換爲字符串,並使用該屬性的名稱。
通過匹配正則表達式在對象上查找屬性名稱的唯一方法是for ... in
循環,就像您提到的那樣。如果對象只有一個屬性,則性能不應該成爲問題。
function findPropertyNameByRegex(o, r) {
for (var key in o) {
if (key.match(r)) {
return key;
}
}
return undefined;
};
findPropertyNameByRegex(obj, regxp); // => 'atr1'
是的,我很害怕這是這種情況..謝謝你,並且很抱歉每個人都想出這樣的虛擬問題! – tenshou 2011-06-03 14:25:08
如果你只有一個屬性,你可以肯定地說for..in
不會太慢。
'VAR OBJ = { ATR1 = 「喇嘛」 }'那是什麼? – wong2 2011-06-03 05:22:25
var obj = {atr1:「bla」}是正確的方法,但我沒有真正解決這個問題 – Ibu 2011-06-03 05:23:40
那麼正則表達式的目的是什麼 – Ibu 2011-06-03 05:24:26