我創建一些描述使用的我有特權名稱Regex
JavaScript,這些是這些:遍歷內部對象對象與具有正則表達式
var privileges = [
"APP_SOMEONE_SRV",
"APP_ANYONE_SRV",
"ADM_AD_XX"
];
var descriptions = {
"NETWORK": {
"GROUP": {
"^APP_(.*)$": {
"^APP_" : "PATH",
"^APP_A05_(.*)" : "$1",
"_SRV" : "ON SERVER"
},
"^A05_(.*)" : "Group $1 at AD",
"^ADM_AD_(.*)": "Administrator $1 at AD",
}
}
}
我調試的代碼與Chrome's Developer Tool
,打印一些VAR提供window.console.log
:
privileges.forEach(function(role) {
var base = "NETWORK";
var type = "GROUP";
Object.keys(descriptions).forEach(function(baseReg) {
if (base.match(new RegExp(baseReg))) {
Object.keys(descriptions[baseReg]).forEach(function(typeReg) {
if (type.match(new RegExp(typeReg))) {
Object.keys(descriptions[baseReg][typeReg]).forEach(function(roleReg) {
var reg = RegExp(roleReg);
window.console.log("role: " + role);
window.console.log("roleReg: " + typeof roleReg + " >> " + roleReg);
if (role.match(reg)) {
var suggestDescription = role.replace(reg, descriptions[baseReg][typeReg][roleReg]);
window.console.log("description: " + suggestDescription);
}
if (roleReg == Object.prototype.toString.call(roleReg) === '[object Object]'){
window.console.log(roleReg + " is object");
}
window.console.log("");
});
}
});
}
});
});
在控制檯上,我得到 「^ _ APP $(*)。」 始終是一個字符串,當它應該是一個對象:
VM107:31 role: APP_SOMEONE_SRV
VM107:32 roleReg: string >> ^APP_(.*)$
VM107:35 description: [object Object]
VM107:40
VM107:31 role: APP_SOMEONE_SRV
VM107:32 roleReg: string >> ^A05_(.*)
VM107:40
VM107:31 role: APP_SOMEONE_SRV
VM107:32 roleReg: string >> ^ADM_AD_(.*)
VM107:40
VM107:31 role: APP_ANYONE_SRV
VM107:32 roleReg: string >> ^APP_(.*)$
VM107:35 description: [object Object]
VM107:40
VM107:31 role: APP_ANYONE_SRV
VM107:32 roleReg: string >> ^A05_(.*)
VM107:40
VM107:31 role: APP_ANYONE_SRV
VM107:32 roleReg: string >> ^ADM_AD_(.*)
VM107:40
VM107:31 role: ADM_AD_XX
VM107:32 roleReg: string >> ^APP_(.*)$
VM107:40
VM107:31 role: ADM_AD_XX
VM107:32 roleReg: string >> ^A05_(.*)
VM107:40
VM107:31 role: ADM_AD_XX
VM107:32 roleReg: string >> ^ADM_AD_(.*)
VM107:35 description: Administrator XX at AD
我已經嘗試改變比較來檢查,如果實際roleReg是一個對象,但它並沒有改變任何東西。它是否有其他方式來迭代描述,在此之前檢查,如果實際的是一個對象?因爲,例如, 「^ A05 _(。*)」 是不是一個對象
爲什麼你會想到它是一個對象?在你的代碼中,'roleReg'是對象的**鍵**之一;它不是您的代碼創建的正則表達式之一。變量'reg'包含RegExp實例,而不是'roleReg'。 – Pointy
@Pointy我看到這裏> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects,它可能是一個對象,在myHonda VAR – mhery
「myHonda」?什麼?對象屬性鍵總是字符串。 (當然,他們可以在ES2015符號實例,但這裏是不相關的。) – Pointy