如何将changeField的值展开为对象属性?
解决JavaScript动态设置对象属性名的问题
嘿,这个问题其实是因为你直接把changeField当作了属性名的字符串,而不是用它变量里的值来作为属性名。ES6里有个很实用的语法叫计算属性名,正好能解决这个问题!
你只需要把对象里的changeField用方括号[]包起来,这样JavaScript就会把这个变量的值解析成属性名,而不是把变量名本身当属性名。修改后的代码如下:
let dataChanges = new Map(); let newValue = "brown"; let changeId = 5; let changeField = "haircolor"; // 这里用方括号包裹changeField,实现动态属性名 dataChanges.set(changeId, { id: changeId, [changeField]: newValue }); console.log(dataChanges);
这样执行后,Map里对应的值就会变成{id: 5, haircolor: 'brown'},完全符合你的需求啦!
内容的提问来源于stack exchange,提问作者TBD QDBA
相关产品推荐
相关产品推荐

