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

如何修改对象中指定键的类型与值且不影响其他键?

问题解答:修改对象指定键值且保留其他数组键

你的代码思路方向没问题,但赋值时少了数组包裹,导致结果不符合预期。另外其实没必要遍历所有键,直接定位到目标键修改更高效。

问题分析

你当前的代码把"Date Time"的值改成了拼接后的字符串"2023-01-12 2023-01-13",但期望的是这个字符串被放在数组里,也就是["2023-01-12 2023-01-13"]。

修正方案

方案1:直接修改目标键(推荐,更高效)

不需要遍历所有键,直接访问obj["Date Time"]进行修改:

var obj = {
  "Severity": [
    "minor",
    "critical"
  ],
  "Type": [
    "communication",
    "operational",
    "qos"
  ],
  "Date Time": {
    "gte": "2023-01-12",
    "lte": "2023-01-13"
  }
}

// 直接修改指定键
obj["Date Time"] = [obj["Date Time"].gte + " " + obj["Date Time"].lte];

console.log(obj);

方案2:保留forEach遍历的写法

如果一定要用Object.keys遍历,只需修改赋值语句,把拼接后的字符串放进数组:

var obj = {
  "Severity": [
    "minor",
    "critical"
  ],
  "Type": [
    "communication",
    "operational",
    "qos"
  ],
  "Date Time": {
    "gte": "2023-01-12",
    "lte": "2023-01-13"
  }
}

Object.keys(obj).forEach((item) => {
  if (item == "Date Time") {
    // 把拼接结果放进数组
    obj[item] = [obj[item].gte + " " + obj[item].lte];
  }
})

console.log(obj);

执行结果

两种方案都会得到你期望的结果:

{
  "Severity": ["minor", "critical"],
  "Type": ["communication", "operational", "qos"],
  "Date Time": ["2023-01-12 2023-01-13"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:15:41