You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:49:34