Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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 从嵌套数组和父数组中删除重复项_Javascript_Angular - Fatal编程技术网

Javascript 从嵌套数组和父数组中删除重复项

Javascript 从嵌套数组和父数组中删除重复项,javascript,angular,Javascript,Angular,您好,我正在尝试使用id从OBEJCT的父数组和嵌套数组中删除重复项,但如果父id为null,则对象应包含这些null id,并删除其他重复项, 但null的id在嵌套数组中也有重复的值,需要删除 以下是对象数组示例: const arr=[{ 身份证号码:6652, 值:“erger”, 复合字段:[] }, { 身份证号码:6652, 价值:“可持续发展框架”, 复合字段:[] }, { 身份证号码:6653, 值:“sdgdfg”, 复合字段:[] }, { 身份证号码:6000, 值:

您好,我正在尝试使用id从OBEJCT的父数组和嵌套数组中删除重复项,但如果父id为null,则对象应包含这些null id,并删除其他重复项, 但null的id在嵌套数组中也有重复的值,需要删除

以下是对象数组示例:

const arr=[{
身份证号码:6652,
值:“erger”,
复合字段:[]
},
{
身份证号码:6652,
价值:“可持续发展框架”,
复合字段:[]
},
{
身份证号码:6653,
值:“sdgdfg”,
复合字段:[]
},
{
身份证号码:6000,
值:“trgd”,
复合字段:[]
},
{
身份证号码:6667,
值:“asdf”,
复合字段:[]
},
{
身份证号码:6667,
值:“fdg”,
复合字段:[]
},
{
身份证号码:6668,
值:“dfgr”,
复合字段:[]
},
{
id:null,
值:“fg”,
复合字段:[{
id:null,
综合指数:100,
值:“test1”
},
{
id:null,
综合指数:100,
值:“test2”
},
]
},
{
id:null,
值:“dfgdf”,
复合字段:[{
id:null,
综合指数:100,
值:“test3”
},
{
id:null,
综合指数:100,
值:“test4”
},
]
},
{
id:null,
值:“fg”,
复合字段:[{
id:null,
综合指数:101,
值:“test1”
},
{
id:null,
综合指数:101,
值:“test2”
},
]
},
{
id:null,
值:“dfgdf”,
复合字段:[{
id:null,
综合指数:101,
值:“test3”
},
{
id:null,
综合指数:101,
值:“test4”
},
]
},
{
id:null,
值:“fg”,
复合字段:[{
id:null,
综合指数:103,
值:“test1”
},
{
id:null,
综合指数:103,
值:“test2”
},
]
},
{
id:null,
值:“dfgdf”,
复合字段:[{
id:null,
综合指数:103,
值:“test3”
},
{
id:null,
综合指数:103,
值:“test4”
},
]
},

];您可以将嵌套数组中的值作为键的一部分

const
数组=[{id:6652,值:“erger”,复合字段:[]},{id:6652,值:“sdfs”,复合字段:[]},{id:6653,值:“sdgdfg”,复合字段:[]},{id:6000,值:“trgd”,复合字段:[]},{id:6667,值:“asdf”,复合字段:[]},{id:6667,值:“fdg”,复合字段:[]},{id:6668,值:“dfgr”,复合字段:[]},{id:null,值:“fg”,复合字段:[{id:null,复合id:100,值:'test1'},{id:null,复合id:100,值:'test2'}]},{id:null,值:'dfgdf],复合字段:[{id:null,复合id:100,值:'test3'},{id:null,复合id:100,值:'test4'},{id:null,值:'fg',复合字段:[{id:null,compositeId:101,value:'test1'},{id:null,compositeId:101,value:'test2'}},{id:null,value:'dfgdf',compositefield:[{id:null,compositeId:101,value:'test3'},{id:null,compositeId:101,value:'test4'},{id:null,value:'fg',compositefield:[{id:null,compositeId:103,value:'test1'},{id:null,compositeId:103,value:'test2'}]},{id:null,value:'dfgdf',compositefield:[{id:null,compositeId:103,value:'test3'},{id:null,compositeId:103,value:'test4'}]},
结果=对象.values(数组.reduce((r,o)=>{
如果(o.id==null){
const key=[o.value,…o.compositField.map({value}=>value)].join('|');
如果(!r[key])r[key]=o;
}否则{
r[`${o.id}`]=o;//防止数字键,维护顺序
}
返回r;
}, {}));
console.log(结果);

作为控制台包装{max height:100%!important;top:0;}
让index=0;const finalResultData=Object.values(finalData.reduce((a,c)=>c.id==null?{…a,[index++]:c}:{…a,[c.id]:c},{});这将仅删除不在嵌套中重复的idarray@NinaScholz完成添加您对
name
value
属性的意思是什么?@NinaScholz compositeId:100,value:'test3'-->name是