Javascript 使用JS从动态多级嵌套对象中删除重复项
我在其中嵌套了json对象,我需要删除具有重复键的对象。 例如:在给定的数组中,我需要根据“value”键从edit、new和delete中删除重复项。我尝试了多种方法,但无法动态执行Javascript 使用JS从动态多级嵌套对象中删除重复项,javascript,nested-object,Javascript,Nested Object,我在其中嵌套了json对象,我需要删除具有重复键的对象。 例如:在给定的数组中,我需要根据“value”键从edit、new和delete中删除重复项。我尝试了多种方法,但无法动态执行 let json = { edit:{ params:[], items:[ { id:"1", source:"text", value:"new1&quo
let json = {
edit:{
params:[],
items:[
{
id:"1",
source:"text",
value:"new1"
},
]
},
delete:{
params:[],
items:[
{
id:"2",
source:"text",
value:"new2"
},
]
},
new:{
params:[],
items:[
{
id:"3",
source:"text",
value:"new1"
},
{
id:"4",
source:"text",
value:"new"
},
{
id:"5",
source:"text",
value:"new2"
},
{
id:"6",
source:"text",
value:"new"
},
]
},
text:{
name:"test",
value:"test",
id:"10"
}
}
预期产出应为:
let result = {
edit:{
params:[],
items:[
{
id:"1",
source:"text",
value:"new1"
}
]
},
delete:{
params:[],
items:[
{
id:"2",
source:"text",
value:"new2"
}
]
},
new:{
params:[],
items:[
{
id:"4",
source:"text",
value:"new"
}
]
},
text:{
name:"test",
value:"test",
id:"10"
}
}
一种简单的方法是让数组在遍历项时保存所有解析的值,并根据它们在该数组中的包含情况过滤项:
//创建空值数组以用于检查重复项
常量值=[];
//创建空结果对象
const result={};
//循环浏览json中的edit、delete、new和text键
Object.keys(json).forEach(key=>{
const obj=json[key];
//循环浏览项目并过滤掉不重复项
常量items=obj.items.filter(item=>!values.includes(item.value));
//将项目值存储在重复检查数组中
items.forEach(item=>values.push(item.value));
//将键添加到结果中
结果[键]={
…obj,//分散原始obj中的所有值
items,//覆盖这些项
};
});