如何遍历嵌套JavaScript对象并修改其中的stageId属性值?
遍历并修改JavaScript对象中的stageId值
嗨,我来帮你搞定这个遍历修改的需求!针对你给出的response对象结构,我们可以通过简单的嵌套遍历轻松完成stageId的修改操作,下面给你几种实用的实现方式:
方法一:使用Object.keys()遍历JobID
Object.keys()会返回对象所有键的数组,我们可以先遍历每个JobID,再遍历对应任务数组修改stageId:
var response = { '2433345': [ { taskId: 20295179, stageId: 'AB-5R-GF' }, { taskId: 20295176, stageId: 'AB-5R-GF' }, ], '2539643': [ { taskId: 28295179, stageId: 'AB-5R-RD' }, { taskId: 20445176, stageId: 'AB-5R-ZZ' }, ] }; // 遍历所有JobID Object.keys(response).forEach(jobId => { // 遍历当前JobID下的任务列表 response[jobId].forEach(task => { // 这里替换成你需要的目标值,示例为添加前缀"MODIFIED-" task.stageId = `MODIFIED-${task.stageId}`; }); }); console.log(response); // 查看修改后的结果
方法二:使用Object.entries()同时获取JobID和任务数组
Object.entries()会返回键值对数组,解构后可以直接拿到JobID和对应的任务列表,代码更直观:
// 遍历键值对,解构得到jobId和tasks数组 Object.entries(response).forEach(([jobId, tasks]) => { tasks.forEach(task => { // 示例:将stageId转为小写 task.stageId = task.stageId.toLowerCase(); }); });
自定义条件修改
如果需要根据不同的JobID或者原stageId值做差异化修改,可以在遍历中加入判断逻辑:
Object.entries(response).forEach(([jobId, tasks]) => { tasks.forEach(task => { // 针对特定JobID修改 if (jobId === '2433345') { task.stageId = 'STAGE-FOR-JOB-2433345'; } // 针对包含特定字符的stageId修改 else if (task.stageId.includes('ZZ')) { task.stageId = 'FINAL-STAGE'; } // 其他自定义规则 }); });
注意点
因为任务对象是引用类型,所以直接修改task.stageId会直接改变原对象中的值,不需要额外返回或重新赋值。如果想要保留原对象,可以先做深拷贝再修改(比如用JSON.parse(JSON.stringify(response)))。
内容的提问来源于stack exchange,提问作者Jim Dover
相关产品推荐
相关产品推荐

