首页 > 解决方案 > 如何过滤带有子对象的对象

问题描述

我有一个使用 AJAX 检索的对象。AJAX 将返回一个具有无限节点的对象,每个节点都可以有自己的孩子。我想过滤这个对象Title,所以我只能得到标题项目。

我的想法是,如果我有任何title: 'project'回应,我会做一件事,如果没有,我会做另一件事。

使用下面的代码片段,我如何获得这个多级对象并对其进行过滤?我试过了,filter但没有用。我试图开始grep工作,但我一定做错了什么,因为它也不起作用。我对 ES5/ES6 和 TS 解决方案持开放态度。

$.mockjax({
  url: '/node/initdata',
  responseTime: 100,
  contentType: 'application/json',
  responseText: {
    "id": "33",
    "collapsed": false,
    "name": "Plan",
    "title": "BusinessPlan",
    "children": [{
      "id": "266",
      "collapsed": false,
      "name": "addd",
      "title": "BusinessPlanObjGoal",
      "children": [{
        "id": "65",
        "collapsed": false,
        "name": "Adding information ",
        "title": "Kpi",
        "children": [],
        "due": 7
      }, {
        "id": "99",
        "collapsed": false,
        "name": "addd",
        "title": "Project",
        "children": []
      }]
    }, {
      "id": "267",
      "collapsed": false,
      "name": "adddasdas",
      "title": "BusinessPlanObjGoal",
      "children": [{
        "id": "55",
        "collapsed": false,
        "name": "Adding new item",
        "title": "Kpi",
        "children": [],
      }]
    }, {
      "id": "268",
      "collapsed": false,
      "name": "plan 2",
      "title": "BusinessPlanObjGoal",
      "children": [{
        "id": "299",
        "collapsed": false,
        "name": "Teste Gui",
        "title": "BusinessPlanObjGoal",
        "children": []
      }]
    }]
  }
});

$.ajax({
  url: '/node/initdata',
  type: 'GET',
  dataType: 'json',
  statusCode: {
    400: function() {
      alert('Wrong Format!!!');
    }
  },
  complete: function(data, status) {
    jsonData = data.responseJSON;
    console.log(jsonData);
    /* 
    dt = cdt.filter(function (entry){
      return entry.title==='department manager';
    });
    console.log(dt);
    */
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mockjax/1.6.2/jquery.mockjax.min.js"></script>

标签: javascriptjqueryecmascript-6

解决方案


推荐阅读