JavaScript中如何为插入嵌套数组的新对象设置动态ID作为键名
解决方案
问题原因
你之前的写法中直接使用id: serviceOrder定义对象键,JS会默认将键名解析为固定字符串"id",不会读取id变量的实际值。
解决方法
使用 ES6 支持的计算属性名语法,将需要作为键名的变量放在方括号[]中即可,JS会自动计算变量值作为最终键名。
另外你提供的原始代码中service的结构存在语法问题:数组内不能直接写1:{a:1,b:3}这种键值对结构,根据你的使用场景分两种情况处理:
情况1:service是对象(括号应为{}而非[])
这也是符合你原有写法的场景,正确代码如下:
let serviceOrder = {a:5, b:6} let id = uuid4(); // 示例值为4 // 用[]包裹id变量作为动态键 let newSer = {...order.service, [id]: serviceOrder} // 替换原service属性 order.service = newSer
情况2:service确实是数组
如果需要往数组中追加元素,元素的键为动态id,写法如下:
let serviceOrder = {a:5, b:6} let id = uuid4(); // 示例值为4 order.service.push({[id]: serviceOrder})
执行后就能得到你预期的效果,动态id会作为键名存入对象中。
内容的提问来源于stack exchange,提问作者Saddam Mohsen
相关产品推荐
相关产品推荐

