Node.js 删除对象内具有相同键名的所有属性
假设我的物体看起来像这样Node.js 删除对象内具有相同键名的所有属性,node.js,lodash,Node.js,Lodash,假设我的物体看起来像这样 { "success": true, "result": 1, "id": "123", "group": [ { "id": "333", "label": "group 1", "students": [ { "id": "s123", "name": "ying" }, { "id": "s456"
{
"success": true,
"result": 1,
"id": "123",
"group": [
{
"id": "333",
"label": "group 1",
"students": [
{
"id": "s123",
"name": "ying"
},
{
"id": "s456",
"name": "yang"
}
]
},
{
"id": "888",
"label": "group 2",
"students": [
{
"id": "j123",
"name": "yinga"
},
{
"id": "j456",
"name": "yanga"
}
]
},
]
}
我需要删除所有带有“id”键的属性。。表示需要完全删除根对象、组和学生中的id
s
如何在Node或lodash中执行此操作?这应该可以:
const myObject={
成功:没错,
结果:1,,
身份证号码:“123”,
组:[
{
身份证号码:“333”,
标签:“第1组”,
学生:[
{
id:“s123”,
姓名:“英”
},
{
id:“s456”,
姓名:“杨”
}
]
},
{
身份证号码:“888”,
标签:“第2组”,
学生:[
{
id:“j123”,
姓名:“英加”
},
{
id:“j456”,
姓名:“yanga”
}
]
}
]
};
函数removeKeyFromObject(keyToDelete、objectToParse){
如果(!objectToParse){
返回objectToParse
}
if(Array.isArray(objectToParse)){
返回objectToParse.map(objectInArray=>{
返回removeKeyFromObject(keyToDelete,objectInArray);
});
}else if(objectToParse&&typeof objectToParse==“object”){
if(objectToParse中的keytodelet){
删除objectToParse[keyToDelete];
}
const newObject={};
Object.keys(objectToParse.forEach)(currentKey=>{
如果(currentKey==keyToDelete){
返回;
}
if(objectToParse[currentKey]=“object”的类型){
return(newObject[currentKey]=removeKeyFromObject(
keytodelet,
objectToParse[currentKey]
));
}
返回(newObject[currentKey]=objectToParse[currentKey]);
});
返回newObject;
}
}
log(JSON.stringify(removeKeyFromObject(“id”,myObject),null,2));
let数据={
“成功”:没错,
"结果":一,,
“id”:“123”,
“集团”:[
{
“id”:“333”,
“标签”:“第1组”,
“学生”:[
{
“id”:“s123”,
“姓名”:“应”
},
{
“id”:“s456”,
“姓名”:“杨”
}
]
},
{
“id”:“888”,
“标签”:“第2组”,
“学生”:[
{
“id”:“j123”,
“姓名”:“英加”
},
{
“id”:“j456”,
“名称”:“yanga”
}
]
},
]
}
设{id,…prunedData}={
…数据,
组:!!data.group?data.group.map(g=>{
设{id,…withoutGroupId}=g
返回{
…没有GroupID,
学生:!!g.students?g.students.map(s=>{
设{id,…withoutsudentid}=s;
不带学生返回;
}):null
}
}):null
} ;
console.log(prunedData)
你只想实现{successs:value,result:value}
?这能回答你的问题吗?此答案有效greatI尝试了您的代码,但我遇到了错误“TypeError:无法使用'in'运算符在null'中搜索指向此行的'id'”if(objectToParse中的keyToDelete)
立即尝试。此外,如果您发布了您正在使用的实际数据,这将非常有用。您粘贴的数据结构传递了我的代码。您是否拥有实际用于运行此操作的数据结构?我尝试了您的代码,但出现错误TypeError:cannotread属性'map'of undefined
,该属性指向行group:data.group.map(g=>{
当组
或学生
不是数组时会发生这种情况。您没有提到它们可能是空的。谢谢,但我已经从链接中得到了答案above@imin我确实更新了。祝你玩得愉快,试着学习js/es。