簡體   English   中英

Angular.js如何在json數組中搜索給定路徑

[英]Angular.js how to search in json array for given path

在我的角度,我有一個$ 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" : [] }
            ]}
          ]}
        ]}
      ];

我想首先找到給定路徑的數組

Admin>subAdmin2-1

並插入

{ "roleName" : "subAdmin2-1-3", "roleId" : "role1213", "children" : [] }

請指導,如何實現這一目標。

這既快速又骯臟,但是可以正常工作:

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]);
          }
        }
      }
    }
  }
}

您可以嘗試通過遞歸進行改進。 您可能希望將其包含在函數中,以便可以調用

var role = "{ "roleName" : "subAdmin2-1-3", "roleId" : "role1213", "children" : [] }";
$scope.addSubRole(role, "Admin", "subAdmin2-1")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM