Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 6按id从嵌套数组中获取对象_Angular_Typescript_Nested_Find_Components - Fatal编程技术网

Angular 6按id从嵌套数组中获取对象

Angular 6按id从嵌套数组中获取对象,angular,typescript,nested,find,components,Angular,Typescript,Nested,Find,Components,我有一个包含课程的课程数组,每个课程都包含一个段数组。我在我的课程详细信息组件中有具体的课程,我想通过id获得一个片段 我有这门课: 课程:ICourse; 课程={ “数据”:[ “id”:1, “标题”:“引言”, “作者”:“Ofir”, “部分”:[ {“id”:1,“name”:“lesson 1”,“segment_type”:“video”,“data:”www.hey.com/1“}, {“id”:2,“name”:“lesson 2”,“segment_type”:“vide

我有一个包含课程的课程数组,每个课程都包含一个段数组。我在我的课程详细信息组件中有具体的课程,我想通过id获得一个片段

我有这门课:

课程:ICourse;
课程={
“数据”:[
“id”:1,
“标题”:“引言”,
“作者”:“Ofir”,
“部分”:[
{“id”:1,“name”:“lesson 1”,“segment_type”:“video”,“data:”www.hey.com/1“},
{“id”:2,“name”:“lesson 2”,“segment_type”:“video”,“data:”www.hey.com/1“},
{“id”:3,“name”:“lesson 3”,“segment_type”:“video”,“data:”www.hey.com/1“},
{“id”:4,“名称”:“测验1”,“段类型”:“quiz1”,“问题”:[
{“id”:1,“name”:“q1”}]},
]
]

}
JSON无效,但我假设
数据
是一个对象,而不是数组

您可以使用数组的
find
函数查找匹配的第一个元素

在这种情况下,我们使用
(c)=>c.id==4
创建一个函数,该函数在找到id等于4的项时返回
true

let course={
“数据”:{
“id”:1,
“标题”:“引言”,
“作者”:“Ofir”,
“部分”:[
{“id”:1,“name”:“lesson 1”,“segment_type”:“video”,“data”:“www.hey.com/1”},
{“id”:2,“name”:“lesson 2”,“segment_type”:“video”,“data”:“www.hey.com/1”},
{“id”:3,“name”:“lesson 3”,“segment_type”:“video”,“data”:“www.hey.com/1”},
{“id”:4,“名称”:“测验1”,“段类型”:“quiz1”,“问题”:[
{“id”:1,“name”:“q1”}]},
]
}
}
让result=course.data.segments.find((c)=>c.id==4);

console.log(result)
您的JSON无效。我从后端服务器获取JSON,但我编写了虚假数据,因为我有很多数据。在我的后端,我有一个课程模型,它有许多分段,分段模式有许多问题。检查数据是对象还是数组?分段是课程中的数组。我将添加一张从我的serverChange*ngIf获取的json的照片,因为我尝试了它,但遇到了一个错误“getCurrentSegment未定义(我为它编写了一个函数)那么你从哪里调用它呢?错误意味着它找不到你的函数…我在OnInit中调用它并在类中定义它。我在原始代码中添加了代码post@OfirSasson它应该是
this.getCurrentSegment(this.course,id);
我做了,但它仍然不工作。我改为:this.currentSegment=course.segments.find(d=>d.id==id);在函数中,但仍不工作