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。