[英]Angular.js how to search in json array for given path
In my angular , i am having one $scope variable as below. 在我的角度,我有一个$ scope变量,如下所示。
$scope.roleList2 = [
{ "roleName" : "User", "roleId" : "role1", "children" : [
{ "roleName" : "subUser1", "roleId" : "role11", "collapsed" : true, "children" : [] },
{ "roleName" : "subUser2", "roleId" : "role12", "collapsed" : true, "children" : [
{ "roleName" : "subUser2-1", "roleId" : "role121", "children" : [
{ "roleName" : "subUser2-1-1", "roleId" : "role1211", "children" : [] },
{ "roleName" : "subUser2-1-2", "roleId" : "role1212", "children" : [] }
]}
]}
]},
{ "roleName" : "Admin", "roleId" : "role2", "children" : [
{ "roleName" : "subAdmin1", "roleId" : "role11", "collapsed" : true, "children" : [] },
{ "roleName" : "subAdmin2", "roleId" : "role12", "children" : [
{ "roleName" : "subAdmin2-1", "roleId" : "role121", "children" : [
{ "roleName" : "subAdmin2-1-1", "roleId" : "role1211", "children" : [] },
{ "roleName" : "subAdmin2-1-2", "roleId" : "role1212", "children" : [] }
]}
]}
]},
{ "roleName" : "Guest", "roleId" : "role3", "children" : [
{ "roleName" : "subGuest1", "roleId" : "role11", "children" : [] },
{ "roleName" : "subGuest2", "roleId" : "role12", "collapsed" : true, "children" : [
{ "roleName" : "Banned Area", "roleId" : "role121", "children" : [
{ "roleName" : "subGuest2-1-1", "roleId" : "role1211", "Parent":"Banned Area" ,"children" : [] },
{ "roleName" : "subGuest2-1-2", "roleId" : "role1212", "Parent":"Banned Area", "children" : [] }
]}
]}
]}
];
I want to first find array for given path 我想首先找到给定路径的数组
Admin>subAdmin2-1
and insert 并插入
{ "roleName" : "subAdmin2-1-3", "roleId" : "role1213", "children" : [] }
Please guide, how can achieve this. 请指导,如何实现这一目标。
This is quick and dirty but will work: 这既快速又肮脏,但是可以正常工作:
for (var i=0; i<$scope.roleList2.length; i++) {
if ($scope.roleList2[i].roleName == "Admin") {
var subRoles = $scope.roleList2[i].children;
for (var k=0; k<subRoles.length; k++) {
if (subRoles[k].roleName == "subAdmin2") {
var subSubRoles = subRoles[k].children;
for (var j=0; j<subSubRoles.length; j++) {
if (subSubRoles[j].roleName == "subAdmin2-1") {
subSubRoles[j].children.push({ "roleName" : "subAdmin2-1-3", "roleId" : "role1213", "children" : [] });
console.log(subSubRoles[j]);
}
}
}
}
}
}
You can try improving with a recursion. 您可以尝试通过递归进行改进。 And you probably want this to be in a function, so you can call
您可能希望将其包含在函数中,以便可以调用
var role = "{ "roleName" : "subAdmin2-1-3", "roleId" : "role1213", "children" : [] }";
$scope.addSubRole(role, "Admin", "subAdmin2-1")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.