javascript - 我在 API 响应中收到一个对象数组,它是嵌套数组。我想通过 ID 查找对象

标签 javascript arrays angularjs

您好,这是一个从 API 响应接收的对象数组,我正在使用 angular.js 和 javascript,我想通过 id 查找获取对象,id 是“1_1_1”。是这个吗可能的?我坚持下去。请帮忙。

[
      {
        "text": "folder 1",
        "parent": {
          "id": "1",
          "name": "folder 1"
        },
        "children": [
          {
            "text": "folder 1_1",
            "parent": {
              "id": "1_1",
              "name": "folder 1_1"
            },
            "children": [
              {
                "text": "folder 1_1_1",
                "parent": {
                  "id": "1_1_1",
                  "name": "folder 1_1_1"
                },
                "children": []
              },
              {
                "text": "folder 1_1_2",
                "parent": {
                  "id": "1_1_2",
                  "name": "folder 1_1_2"
                },
                "children": []
              }
            ]
          },
          {
            "text": "folder 1_2",
            "parent": {
              "id": "1_2",
              "name": "folder 1_2"
            },
            "children": [
              {
                "text": "folder 1_2_1",
                "parent": {
                  "id": "1_2_1",
                  "name": "folder 1_2_1"
                },
                "children": []
              }
            ]
          }
        ]
      },
      {
        "text": "folder 2",
        "parent": {
          "id": "2",
          "name": "folder 2"
        },
        "children": [
          {
            "text" : "folder 2_1",
            "parent": {
              "id": "2_1",
              "name": "folder 2_1"
            },
            "children": []
          },
          {
            "text" : "folder 2_2",
            "parent": {
              "id": "2_2",
              "name": "folder 2_2"
            },
            "children": []
          },
          {
            "text" : "folder 2_3",
            "parent": {
              "id": "2_3",
              "name": "folder 2_3"
            },
            "children": [
              {
                "text" : "folder 2_3_1",
                "parent": {
                  "id": "2_3_1",
                  "name": "folder 2_3_1"
                },
                "children": []
              }
            ]
          },
        ]
      },
      {
       "text": "folder 3",
       "parent": {
         "id": "3",
         "name": "folder 3"
       },
       "children": []
     }
    ]

最佳答案

试试这个:

function isMatch(element, criteria) {
    var parent = null;
    if (typeof element.parent !== 'undefined') {
        parent = element.parent;
        if (typeof parent.id !== 'undefined') {
            return (parent.id === criteria);
        }
    }
    return false;
}

function findById (tree, criteria) {

    for (var i = 0; i < tree.length; i = i + 1) {
        var obj = tree[i];
        if (isMatch(obj, criteria)) {
            return obj;
        };

        if (typeof obj.children !== 'undefined') {
            var foundElement = findById(obj.children, criteria);
            if (foundElement != null) {
                return foundElement;
            }
        }
    }

    return null;
}

关于javascript - 我在 API 响应中收到一个对象数组,它是嵌套数组。我想通过 ID 查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252765/

相关文章:

javascript - 如何将我的 Controller 与 AngularJS 结合起来?

Javascript函数没有访问全局范围?

javascript - Knockout.js延迟值更新: afterkeydown

arrays - didSelectRowAt 更改所有行中的值

ios - 如何在 Swift 中对字典类型的数组应用 removeAtIndex?

javascript - AngularJS:如何使用 token 安全性和自定义方法处理 RESTful API?

javascript - 如何在 Electron 中制作尺寸对象?

getElementById 的 Javascript 速记

javascript - 当数组有元素时返回 Array[0] 的函数 | typescript /Javascript

javascript - 当字符串包含 "↵"时如何换行?