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

如何在JavaScript中为返回的JSON对象添加新的键值对

解决方案

你使用Object.assign出现值覆盖的原因是操作对象层级错误,没有针对每个子级对象做属性新增,而是直接操作了顶层响应对象。以下是两种可行的实现方式:

方式1:直接修改原响应对象

如果你可以接受修改原始响应数据,直接遍历所有子对象新增字段即可:

// 假设res为你拿到的JSON响应对象
for (const idx in res) {
  if (res.hasOwnProperty(idx)) {
    // 可根据需求自定义newUrl的取值,支持动态拼接子对象的字段
    res[idx].newUrl = "test/112/testname"
  }
}

方式2:生成新对象不污染原始数据

如果需要保留原始响应对象不变,使用扩展运算符或者Object.assign对每个子对象做属性扩展即可:

const newRes = Object.fromEntries(
  Object.entries(res).map(([idx, item]) => [
    idx,
    {
      ...item,
      newUrl: "test/112/testname"
    }
  ])
)

如果要用Object.assign实现和上面扩展运算符相同的效果,写法如下,不会出现覆盖问题:

const newRes = Object.fromEntries(
  Object.entries(res).map(([idx, item]) => [
    idx,
    Object.assign({}, item, { newUrl: "test/112/testname" })
  ])
)

注意:调用Object.assign时第一个参数要传空对象作为目标,第二个参数传原始子对象,第三个参数传要新增的属性,这样才会在复制原始属性的基础上新增字段,不会覆盖原有数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:36:04