首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回第一个在javascript多级嵌套对象数组中包含特定值的对象

返回第一个在javascript多级嵌套对象数组中包含特定值的对象
EN

Stack Overflow用户
提问于 2017-07-15 11:47:12
回答 2查看 33关注 0票数 0

我有一个对象,它包含按工作日嵌套和分组的任务。我不能改变它的结构。返回第一个任务的最佳方式是什么,即该任务的“状态”键!==“完成”的值。

代码语言:javascript
复制
    {  
   "total_resource_cost":"20.0",
   "total_unassigned_tasks_count":0,
   "tasks":[  
      {  
         "unassigned_tasks_count":0,
         "resource_cost":"9.0",
         "weekday":"Tuesday",
         "date":"2017-07-11",
         "tasks":[  
            {  
               "id":6196,
               "title":null,
               "category":"Guest Ready Clean",
               "status":"new",
               "date":"2017-07-11",
               "due_date":null,
               "assigned_to":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_id":2,
               "assigned_to_2_id":2,
               "team":null,
               "description":null,
               "property":{  
                  "id":114,
                  "code":"WEB-1",
                  "lat":"51.45625339999999",
                  "lng":"-0.16253770000002987",
                  "postal_code":"SW11 6SF"
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:34.944Z",
               "updated_at":"2017-07-14T14:08:07.082Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"Booking followed by booking.",
               "obsolete":true,
               "resource_cost":"3.0"
            },
            {  
               "id":6228,
               "title":null,
               "category":"Owner Leaving Clean",
               "status":"new",
               "date":"2017-07-11",
               "due_date":null,
               "assigned_to":{  
                  "name":"David the Housekeeper",
                  "id":220,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_id":220,
               "assigned_to_2_id":2,
               "team":null,
               "description":null,
               "property":{  
                  "id":245,
                  "code":"ROL-1",
                  "lat":"51.51190219999999",
                  "lng":"-0.03558299999997416",
                  "postal_code":"E14 7JA"
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:39.895Z",
               "updated_at":"2017-07-14T14:07:58.565Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"Booking following block.",
               "obsolete":true,
               "resource_cost":"2.5"
            },
            {  
               "id":6207,
               "title":null,
               "category":"Guest Ready Clean",
               "status":"new",
               "date":"2017-07-11",
               "due_date":null,
               "assigned_to":{  
                  "name":"David the Housekeeper",
                  "id":220,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_id":220,
               "assigned_to_2_id":2,
               "team":null,
               "description":null,
               "property":{  
                  "id":126,
                  "code":"PRO-1",
                  "lat":"51.5375129",
                  "lng":"-0.042265000000043074",
                  "postal_code":"E9 7DS"
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:35.963Z",
               "updated_at":"2017-07-14T14:07:54.920Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"Booking followed by booking.",
               "obsolete":true,
               "resource_cost":"2.0"
            },
            {  
               "id":6202,
               "title":null,
               "category":"Guest Ready Clean",
               "status":"new",
               "date":"2017-07-11",
               "due_date":null,
               "assigned_to":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":{  
                  "name":"David the Housekeeper",
                  "id":220,
                  "mobile":"+",
                  "teams":[  

                  ]
               },
               "assigned_to_id":2,
               "assigned_to_2_id":220,
               "team":null,
               "description":null,
               "property":{  
                  "id":234,
                  "code":"CAD-2",
                  "lat":"51.4924164",
                  "lng":"-0.16394930000001295",
                  "postal_code":"SW3 2PP"
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:35.307Z",
               "updated_at":"2017-07-14T14:07:49.911Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"Booking followed by booking.",
               "obsolete":true,
               "resource_cost":"1.5"
            }
         ]
      },
      {  
         "unassigned_tasks_count":0,
         "resource_cost":"11.0",
         "weekday":"Wednesday",
         "date":"2017-07-12",
         "tasks":[  
            {  
               "id":6148,
               "title":null,
               "category":"Guest Ready Clean",
               "status":"new",
               "date":"2017-07-12",
               "due_date":null,
               "assigned_to":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":null,
               "assigned_to_id":2,
               "assigned_to_2_id":null,
               "team":null,
               "description":null,
               "property":{  
                  "id":116,
                  "code":"SAR-1",
                  "lat":null,
                  "lng":null,
                  "postal_code":null
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:28.736Z",
               "updated_at":"2017-07-14T15:30:15.665Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"Booking followed by booking.",
               "obsolete":true,
               "resource_cost":"5.5"
            },
            {  
               "id":6193,
               "title":null,
               "category":"Guest Ready Clean",
               "status":"new",
               "date":"2017-07-12",
               "due_date":null,
               "assigned_to":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":null,
               "assigned_to_id":2,
               "assigned_to_2_id":null,
               "team":null,
               "description":null,
               "property":{  
                  "id":216,
                  "code":"MAC-1",
                  "lat":"51.5480904",
                  "lng":"-0.11545330000001286",
                  "postal_code":"N7 8QY"
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:34.435Z",
               "updated_at":"2017-07-14T15:30:03.989Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"A stay has ended. Unclear what the next event is.",
               "obsolete":true,
               "resource_cost":"3.5"
            },
            {  
               "id":6238,
               "title":null,
               "category":"Guest Ready Clean",
               "status":"new",
               "date":"2017-07-12",
               "due_date":null,
               "assigned_to":{  
                  "name":"David",
                  "id":2,
                  "mobile":"",
                  "teams":[  

                  ]
               },
               "assigned_to_2":null,
               "assigned_to_id":2,
               "assigned_to_2_id":null,
               "team":null,
               "description":null,
               "property":{  
                  "id":252,
                  "code":"WEL-1",
                  "lat":"51.4853737",
                  "lng":"0.03197999999997592",
                  "postal_code":"SE7 7PH"
               },
               "list":null,
               "priority":3,
               "created_by":null,
               "created_at":"2017-07-11T16:39:40.933Z",
               "updated_at":"2017-07-14T15:29:53.195Z",
               "updated_by":{  
                  "id":2,
                  "name":"David",
                  "teams":[  

                  ]
               },
               "notes":null,
               "trigger_rule":"Booking followed by booking.",
               "obsolete":true,
               "resource_cost":"2.0"
            }
         ]
      }
   ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-15 12:01:39

比阿菲舍克·索尼的回答稍微好一点。我们可以使用.find返回数组中返回true的第一项,而不是对所有完成的任务进行过滤。

代码语言:javascript
复制
const firstCompletedTasked = response.tasks[0].tasks.find(task => task.status === 'complete');
票数 2
EN

Stack Overflow用户

发布于 2017-07-15 11:51:14

假设您将该对象保存在名为response的变量中

代码语言:javascript
复制
let firstInCompleteTask = response.tasks[0].tasks.filter((task)=>{
  return task.status !== 'complete'
})[0];

另外,第一个tasks数组有两个对象,然后在其中包含一个任务数组。上面的代码从第一个对象返回第一个不完全任务。

如果希望两个对象的任务都不完整,则必须使用以下内容:

代码语言:javascript
复制
let incompleteTasks = [];
for(i = 0; i < response.tasks.length; i++){
    let firstInCompleteTask = response.tasks[i].tasks.filter((task)=>{
      return task.status !== 'complete'
    })[0];

    incompleteTasks.push(fistInCompleteTask);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45117834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档