【问题标题】:Push array of object to JSON in angular以角度将对象数组推送到 JSON
【发布时间】:2018-10-31 05:47:08
【问题描述】:

我确实有一个如下所示的 JSON 对象

[
  {
    "directories": [
      {
        "type": "folder",
        "name": "Real Estate",
        "order": "1",
        "delete": "false",
        "canModify": "true"
      },
      {
        "type": "folder",
        "name": "ABC",
        "order": "8",
        "delete": "false",
        "canModify": "true"
      },
      {
        "type": "folder",
        "name": "Legal",
        "order": "2",
        "delete": "false",
        "canModify": "false",
        "directories": [
          {
            "type": "subfolder",
            "name": "Lease",
            "order": "9",
            "delete": "false",
            "canModify": "false"
          }
        ]
      },
      {
        "type": "folder",
        "name": "Construction",
        "order": "4",
        "delete": "false",
        "canModify": "true"
      }
    ]
  }
]

我有一个对象数组,我需要将其推入具有“名称:构造”的对象中。

我尝试了以下代码

var folderObj = {
                  "name": "",
                  "canModify":'true',
                  "type":'folder',
                  "delete":'false',
                   "order": $scope.directories.length + 1
                }
$scope.directories.push(folderObj);

我需要的实际输出是将对象推送到父文件夹中

  [
      {
        "directories": [
          {
            "type": "folder",
            "name": "Real Estate",
            "order": "1",
            "delete": "false",
            "canModify": "true"
          },
          {
            "type": "folder",
            "name": "ABC",
            "order": "8",
            "delete": "false",
            "canModify": "true"
          },
          {
            "type": "folder",
            "name": "Legal",
            "order": "2",
            "delete": "false",
            "canModify": "false",
            "directories": [
              {
                "type": "subfolder",
                "name": "Lease",
                "order": "9",
                "delete": "false",
                "canModify": "false"
              }
            ]
          },
          {
            "type": "folder",
            "name": "Construction",
            "order": "4",
            "delete": "false",
            "canModify": "true",
            "directories": [
              {
                "type": "subfolder",
                "name": "NewFolder",
                "order": "10",
                "delete": "false",
                "canModify": "false"
              }
            ]
          }
        ]
      }
    ]

由于我是 Angular 的新手,我无法弄清楚如何推动对象,所以任何帮助表示赞赏。

【问题讨论】:

    标签: angularjs json multidimensional-array


    【解决方案1】:

    您需要编写一个递归函数。尝试关注

    let arr = [{"directories":[{"type":"folder","name":"Real Estate","order":"1","delete":"false","canModify":"true"},{"type":"folder","name":"ABC","order":"8","delete":"false","canModify":"true"},{"type":"folder","name":"Legal","order":"2","delete":"false","canModify":"false","directories":[{"type":"subfolder","name":"Lease","order":"9","delete":"false","canModify":"false"}]},{"type":"folder","name":"Construction","order":"4","delete":"false","canModify":"true"}]}];
    let obj = {"type":"subfolder","name":"NewFolder","order":"10","delete":"false","canModify":"false"};
    let label = "Construction";
    
    /* Function takes 3 inputs
     * a - arr containing objects
     * l - label - unique identifier of the match
     * o - object that needs to be added */
    function addObjectToTree(a, l, o) {
      // Iterate over arr
      for (let i = 0; i < a.length; i++) {
        let p = a[i]; // get the object
        if(p.name === l) { // if there is a match add to directories
          p.directories = (p.directories || []).concat([o]);
          return true;
        } else if(p.directories) { // else check if there are sub-folders
          // If there was a match in sub folders break the loop
          if(addObjectToTree(p.directories, l, o)) break;
        }
      }
    }
    
    addObjectToTree(arr, label, obj);
    console.log(arr);

    【讨论】:

      猜你喜欢
      • 2018-11-10
      • 2020-10-28
      • 2019-07-19
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      相关资源
      最近更新 更多