javascript - 如何删除深层嵌套数组中的对象?Javascript
问题描述
dasjnkdsajnnjdajnkskdsanjnkjadnksjnjkdaksnnkanjknjkasndnsjasnkjnjkndsnkdasadknsj
{
"name":"Pacinciriaidisiasi 55",
"dsa":[
]
"das":false,
"das":false,
"ads":{
"ads":"test",
"da":"te",
eId":123,
"series":[
],
}on":"o gilmanesu tetp 2",
"dsa":4,
"das":5,
"lastModificationTime":"2020-12-20T10:21:33.063738",
"das":"sda-12-04T19:30:33.841649",
"dsa":0,
"das":76
},
"das":[
{
"dasd":false,
"ads":34,
"dsad":0.0,
"dsa":false,
"das":0,
"dsa":""
}
]
},
萨达萨达斯
dasdajnsdknajsdasdas dsadasdsadas
dasdajnsdknajsdasdas dsadasdsadas
dasdajnsdknajsdasdas dsadasdsadas
dasdajnsdknajsdasdas dsadasdsadas
dasdajnsdknajsdasdas dsadasdsadas
dasdajnsdknajsdasdas dsadasdsadas
dasdajnsdknajsdasdas d
解决方案
这是一个使用object-scan更灵活的解决方案。
权衡是它需要依赖。如果这是可以接受的,实际上取决于您的要求是什么以及您可能正在进行的其他数据处理。
// const objectScan = require('object-scan');
const myData = [{ name: 'Pacinciriaidisiasi 55', description: 'Pancirica', userId: 2, trainerId: 60, dateFrom: '2021-01-15T07:00:00', dateTo: '2021-01-15T07:22:00', duration: 0, difficulty: 2, completedPercentage: 0, completed: false, work: 0, activityType: 4, goal: 2, trainingExercises: [] }, { name: 'Hirosima', description: 'hiorsima', difficulty: 2, completedPercentage: 0, completed: false, work: 0, activityType: 4, goal: 3, trainingExercises: { exerciseName: 'Gajo Haj', exerciseId: 76, id: 330, isTimed: false, exercise: { name: 'Gajo Haj', description: 'Gajo jo opis', difficulty: 0, difficulties: [2], equipmentId: 0, mainPictureUrl: '', location: [5], isTest: false, isFunctional: true, isTimed: true, trainingTemplateExercises: [{ trainingTemplateId: 48, exerciseId: 76, series: [34], seriesLoad: [0], seriesPause: [0], seriesCompleted: [false], seriesNote: [''], numberOfWarmupSeries: 0, completed: false, load: 0, failureSet: false, isWarmup: false, isTimed: false, isTest: false, trainingTemplate: { name: 'test', description: 'te', trainerId: 60, activityType: 4, goal: 3, trainingTemplateExercises: [{ trainingTemplateId: 48, exerciseId: 31, series: [36, 51], seriesLoad: [23, 39], seriesPause: [18, 31], seriesCompleted: [false, false], seriesNote: ['radi editovano', 'radi editovano'], numberOfWarmupSeries: 0, completed: false, isTest: false, exercise: { name: 'Potisk s prsi poševno editovani prao 30 dec', description: 'KOntrolirana izvedba. Hitrost 2:1 ( 2 sekundi popuščaš, 1 sekundo dvigaš). ', difficulty: 0, difficulties: [], equipmentId: 15, type: '', mainPictureUrl: '', fullVideoUrl: 'https://www.lacanl.com/images/Screen Recording 2020-12-13 at 23.20.14.mov', location: [0, 1], isTest: false, isFunctional: false, primaryExerciseGoal: 1, secondaryExerciseGoal: 1, trainingTemplateExercises: [], isDeleted: false, id: 31 }, deletionTime: '0001-01-01T00:00:00', isDeleted: false, id: 391 }, { trainingTemplateId: 48, exerciseId: 123, series: [], seriesLoad: [], seriesPause: [], seriesCompleted: [], seriesNote: [], numberOfWarmupSeries: 0, completed: false, isTest: false, exercise: { name: 'TESTNO zagrevanje', description: 'testno zagrevanje trcnaje', difficulty: 0, difficulties: [1, 0], equipmentId: 18, type: '', mainPictureUrl: '', fullVideoUrl: 'https://www.lacanl.com/images/Screen Recording 2020-12-20 at 22.22.34.mov', location: [2], isTest: false, isFunctional: false, isTimed: true, loadType: 1, trainingTemplateExercises: [], isDeleted: false, lastModificationTime: '2021-01-09T18:12:55.781719', creationTime: '2021-01-09T18:12:41.531278', creatorUserId: 0, id: 123 }, deletionTime: '0001-01-01T00:00:00', isDeleted: false, creationTime: '2021-01-09T18:19:51.308286', creatorUserId: 60, id: 406 }], trainingPlanTrainingTemplates: [{ trainingPlanId: 35, trainingTemplateId: 48, trainingPlan: { name: 'Ep o GIlgamesu 2', description: 'o gilmanesu tetp 2', primaryGoal: 4, secondaryGoal: 5, trainingPlanTrainingTemplates: [{ trainingPlanId: 35, trainingTemplateId: 47, trainingTemplate: { name: 'Pacinciriaidisiasi 55', description: 'Pancirica', trainerId: 60, goal: 2, trainingTemplateExercises: [], trainingPlanTrainingTemplates: [], isDeleted: false, creationTime: '2020-12-18T06:02:41.249868', creatorUserId: 60, id: 47 }, isDeleted: false, creationTime: '2020-12-30T12:53:56.732597', creatorUserId: 60, id: 7 }], trainerId: 60, isDeleted: false, id: 35 }, isDeleted: false, creationTime: '2020-12-30T12:53:56.732636', creatorUserId: 60, id: 8 }], isDeleted: false, creationTime: '2020-12-18T06:24:35.914538', creatorUserId: 60, id: 48 }, deletionTime: '0001-01-01T00:00:00', isDeleted: false, lastModificationTime: '2020-12-30T12:53:43.889724', lastModifierUserId: 60, creationTime: '2020-12-18T06:24:35.917131', creatorUserId: 60, id: 330 }], isDeleted: false, lastModificationTime: '2020-12-20T10:21:33.063738', creationTime: '2020-12-04T19:30:33.841649', creatorUserId: 0, id: 76 }, sets: [{ isWarmup: false, reps: 34, value: 0, completed: false, pause: 0, note: '' }] } }];
const prune = (data) => objectScan(['[*]trainingExercises.exercise'], {
rtn: 'count',
filterFn: ({ parent, property }) => {
delete parent[property];
}
})(data);
console.log('exercise' in myData[1].trainingExercises);
// => true
console.log(prune(myData)); // returns number of deletions
// => 1
console.log('exercise' in myData[1].trainingExercises);
// => false
.as-console-wrapper {max-height: 100% !important; top: 0}
<script src="https://bundle.run/object-scan@13.8.0"></script>
免责声明:我是对象扫描的作者
推荐阅读
- python-3.x - 如何安装 sent2vec 模块?
- c# - 在 MVC 中使用不同功能的同一行中的 2 个提交按钮
- flutter - 在 ios 上进行代码签名时无法在 Codemagic 上创建身份验证会话
- django - 禁止直接分配到多对多集合的前端。改用interested_time.set()
- javascript - Ngx-Charts 显示所有 x 轴值但交替的 x 轴标签
- python - 我希望我的对象继续移动,但它不起作用
- python - 如何将 DataFrame 转换为嵌套字典,子元素和父元素中都存在相同的列
- amazon-web-services - 从 VPC 内的 lambda 函数访问 AWS Data Exchange 时返回超时错误
- python - python程序/可执行文件是可移植的吗?
- c# - 实现接口的 Blazor 组件列表