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

如何使用JavaScript或Lodash修改嵌套JSON中的指定数据

实现方案

原生JavaScript实现

直接使用数组自带的map方法遍历员工数组,结合对象扩展运算符生成新对象,全程不修改原始数据:

const originalData = {
  "employees": [
    { "name": "Ram", "email": "ram@gmail.com", "age": 23 },
    { "name": "Shyam", "email": "shyam23@gmail.com", "age": 28 },
    { "name": "John", "email": "john@gmail.com", "age": 33 },
    { "name": "Bob", "email": "bob32@gmail.com", "age": 33 }
  ]
};

const processedData = {
  // 保留根层级其余属性
  ...originalData,
  // 遍历处理员工数组
  employees: originalData.employees.map(emp => {
    // 年龄为33则更新为1,否则保留原属性
    return emp.age === 33 ? {...emp, age: 1} : {...emp};
  })
};

如果实际使用场景中员工对象存在深层嵌套属性,可以用structuredClone(emp)代替扩展运算符做深拷贝,避免引用类型属性共享的问题。

Lodash实现

可以借助Lodash的工具方法简化操作,同样保证原始数据不被修改:

const processedData = _.cloneDeep(originalData);
processedData.employees = _.map(processedData.employees, emp => {
  if (emp.age === 33) emp.age = 1;
  return emp;
});

也可以不用提前深拷贝,直接生成新结构:

const processedData = {
  ...originalData,
  employees: _.map(originalData.employees, emp => 
    emp.age === 33 ? _.assign({}, emp, {age: 1}) : _.clone(emp)
  )
};

内容的提问来源于stack exchange,提问作者Lê Quốc Khánh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:45:04