如何修改对象中指定键的类型与值且不影响其他键?
问题解答:修改对象指定键值且保留其他数组键
你的代码思路方向没问题,但赋值时少了数组包裹,导致结果不符合预期。另外其实没必要遍历所有键,直接定位到目标键修改更高效。
问题分析
你当前的代码把"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
相关产品推荐
相关产品推荐

