Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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
Javascript 根据angular 5中的不同参数过滤和映射对象数组的属性_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 根据angular 5中的不同参数过滤和映射对象数组的属性

Javascript 根据angular 5中的不同参数过滤和映射对象数组的属性,javascript,angular,typescript,Javascript,Angular,Typescript,我想通过在角度视图中使用map和filter对两个嵌套对象数组进行过滤和映射来实现以下目标 关于我的最后一个问题,我有一个解决方案,可以根据特定属性进行过滤 但我不知道如何根据不同的属性过滤不同的对象 我想过滤一些使用id属性的对象和一些使用val。。。可能吗 我想根据val比较type1和type2 我想使用dataid比较type1和type2数据对象 我想根据id比较type3/type4 const obj1=[ { “val”:“type1”, “已删除”:“N”, “id”:

我想通过在角度视图中使用map和filter对两个嵌套对象数组进行过滤和映射来实现以下目标

关于我的最后一个问题,我有一个解决方案,可以根据特定属性进行过滤

但我不知道如何根据不同的属性过滤不同的对象

我想过滤一些使用id属性的对象和一些使用val。。。可能吗

  • 我想根据val比较type1和type2
  • 我想使用dataid比较type1和type2数据对象
  • 我想根据id比较type3/type4
const obj1=[
{
“val”:“type1”,
“已删除”:“N”,
“id”:1,
“数据”:[
{
“标签”:“类型1-a”,
“已删除”:“N”,
“数据ID”:16
},
{
“标签”:“类型1-b”,
“已删除”:“N”,
“数据ID”:26
}
]
},
{
“val”:“type2”,
“已删除”:“N”,
“id”:2,
“数据”:[
{
“标签”:“类型2-a”,
“已删除”:“N”,
“数据ID”:12
},
{
“标签”:“类型2-b”,
“已删除”:“N”,
“数据ID”:34
}
]
},
{
“val”:“type3”,
“已删除”:“N”,
“id”:124,
“标签”:“type3-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:126,
“标签”:“type4-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:128,
“标签”:“type4-label2”
}
]
常数obj2=[
{
“val”:“type1new”,
“已删除”:“N”,
“id”:1
“数据”:[
{
“标签”:“type1new”,
“已删除”:“N”,
“数据ID”:16
},
{
“标签”:“类型1-c”,
“已删除”:空,
“dataid”:空
},
{
“标签”:“类型1-d”,
“已删除”:空,
“dataid”:空
}
]
},
{
“val”:“type3”,
“已删除”:“N”,
“id”:124,
“标签”:“type3-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:126,
“标签”:“type4-label1”
},
{
“val”:“type3”,
“已删除”:空,
“id”:128,
“标签”:“新”
}
]
结果=[
{
“val”:“type1new”,
“已删除”:“N”,
“id”:1,
“数据”:[
{
“标签”:“type1new”,
“已删除”:“N”,
“数据ID”:16
},
{
“标签”:“类型1-b”,
“已删除”:“Y”,
“数据ID”:26
},
{
“标签”:“类型1-c”,
“已删除”:空,
“dataid”:空
},
{
“标签”:“类型1-d”,
“已删除”:空,
“dataid”:空
}
]
},
{
“val”:“type2”,
“已删除”:“Y”,
“数据”:[
{
“标签”:“类型2-a”,
“已删除”:“N”,
“数据ID”:12
},
{
“标签”:“类型2-b”,
“已删除”:“N”,
“数据ID”:34
}
]
},
{
“val”:“type3”,
“已删除”:“N”,
“id”:124,
“标签”:“type3-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:126,
“标签”:“type4-label1”
},
{
“val”:“type4”,
“已删除”:“Y”,
“id”:128,
“标签”:“type4-label2”
},
{
“val”:“type4”,
“已删除”:空,
“id”:空,
“标签”:“type4-label3”
},
{
“val”:“type3”,
“已删除”:空,
“id”:128,
“标签”:“新”
}

]
以下是我将如何解决这个问题

const obj1=[
{
“val”:“type1”,
“已删除”:“N”,
“数据”:[
{
“标签”:“类型1-a”,
“已删除”:“N”,
“数据ID”:16
},
{
“标签”:“类型1-b”,
“已删除”:“N”,
“数据ID”:26
}
]
},
{
“val”:“type2”,
“已删除”:“N”,
“数据”:[
{
“标签”:“类型2-a”,
“已删除”:“N”,
“数据ID”:12
},
{
“标签”:“类型2-b”,
“已删除”:“N”,
“数据ID”:34
}
]
},
{
“val”:“type3”,
“已删除”:“N”,
“id”:124,
“标签”:“type3-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:126,
“标签”:“type4-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:128,
“标签”:“type4-label2”
}
]
常数obj2=[
{
“val”:“type1”,
“已删除”:“N”,
“数据”:[
{
“标签”:“类型1-a”,
“已删除”:“N”,
“数据ID”:16
},
{
“标签”:“类型1-c”,
“已删除”:空,
“dataid”:空
},
{
“标签”:“类型1-d”,
“已删除”:空,
“dataid”:空
}
]
},
{
“val”:“type3”,
“已删除”:“N”,
“id”:124,
“标签”:“type3-label1”
},
{
“val”:“type4”,
“已删除”:“N”,
“id”:126,
“标签”:“type4-label1”
},
{
“val”:“type3”,
“已删除”:空,
“id”:128,
“标签”:“新”
}
]
常量getIdentity=(obj)=>{
如果([“类型1”,“类型2”]包括(对象值)){
返回obj.val;
}
如果([“类型3”,“类型4”]包括(对象值)){
返回obj.id+obj.val;
}
}
常量结果=obj1.减少((acc,obj)=>{
const similarObj=obj2.find(nobj=>getIdentity(nobj)==getIdentity(obj));
if([“类型1”、“类型2”]。包括(obj.val)&&similarObj){
常量数据=对象数据.reduce((nacc,项)=>{
const similarItem=similarObj.data.find(pr=>pr.dataid==item.dataid);
if(!similarItem){
返回[…nacc,{…项,删除:'Y'}];
}
常量newItem={
…项目,
…相似项
}
返回