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

如何在JavaScript对象数组中修改指定字段值且保留原有数据

问题解决:修改JavaScript对象数组中指定元素的字段值

你的需求

将对象obj的create数组内,field值为test的元素的field属性修改为test_ID,同时保留对象和数组中的所有原有数据。

你的对象结构:

const obj = {
  pro: 0,
  gr: 0,
  create: [
    {
      field: "test",
      value: 12345
    }
  ]
};

当前代码的问题

你编写的代码存在两处关键错误:

  • 字符串'OWNER'无法调用数组的join方法,且你需要匹配的是field: 'test',目标值写错了
  • find方法的箭头函数语法不完整,缺少闭合括号,且找到元素后未执行修改操作

错误代码示例:

const test = obj.create.find((ele) => ele.field === 'OWNER'.join('_ID');

正确解法

方法1:直接修改原对象(适合允许修改原数据的场景)

通过find定位目标元素后,直接修改其field属性,不会丢失任何原有数据:

// 找到field为'test'的元素
const targetEle = obj.create.find(ele => ele.field === 'test');
// 确保找到元素后再修改,避免报错
if (targetEle) {
  targetEle.field = 'test_ID';
}

console.log(obj);
// 输出结果:
// {
//   pro: 0,
//   gr: 0,
//   create: [ { field: 'test_ID', value: 12345 } ]
// }

方法2:创建新对象(适合需要保持原对象不可变的场景)

如果不想修改原对象,可通过解构赋值生成新的对象和数组:

const newObj = {
  ...obj,
  create: obj.create.map(ele => {
    if (ele.field === 'test') {
      return { ...ele, field: 'test_ID' };
    }
    return ele;
  })
};

console.log(newObj); // 新对象的create数组中目标元素已修改
console.log(obj); // 原对象保持不变

内容的提问来源于stack exchange,提问作者Marizona

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:18:23