我試圖做一個簡單的ACL只是爲了實踐。JavaScript - 通過對象遞歸循環
我想通過我的對象數據循環,如果我currentViewer有一個父母我想添加他的路徑(訪問我的對象)arrayAccess。
所以,如果我的瀏覽器是用戶自己accessArray應該["", home]
,如果他管理這將是["", home, user]
,如果他是一個客人將是唯一[""]
。
如何以遞歸的方式做到這一點,所以我不必創建數千個for循環?
我試圖在我的checkParent()
裏面調用checkParent()
,但這隻會讓我的循環不定。我很抱歉,如果這是一個愚蠢的問題,我在JS開始。
var currentViewer = "user";
var data = {
users: [{
role: "guest",
access: ""
},
{
role: "user",
access: "home",
parent: "guest"
},
{
role: "admin",
access: "user",
parent: "user"
}
]
};
var accessArray = [];
function checkRole() {
var users = data.users;
for (var i = 0; i < users.length; i++) {
if (currentViewer === users[i].role) {
accessArray.push(users[i].access);
console.log(accessArray);
function checkParent() {
if (users[i].parent) {
for (var j = 0; j < users.length; j++) {
if (users[i].parent === users[j].role) {
accessArray.push(users[j].access);
console.log(accessArray);
}
}
}
};
checkParent();
}
};
};
checkRole();
謝謝你,但你的陣列管理員只返回'[ 「家」, 「用戶」]'而不是'[ 「」, 「家」, 「用戶」]' – Sara
@Sara:我的不好,請檢查我的最新答案。它現在可以正常工作 –