Node.js动态添加对象属性求助:如何实现属性名动态化
解决方案:实现JavaScript对象动态属性名
这问题我之前也碰到过,核心是你需要用动态属性名来替代固定的属性名,下面给你两种靠谱的解决办法:
方法1:ES6计算属性名(推荐,简洁直观)
直接在对象字面量里用方括号包裹变量,就能把变量的值作为属性名:
let fileName = "test.c"; let testCase = "Case1"; let test = { [fileName]: testCase // 这里的[]会解析fileName变量的值,作为属性名 }; console.log(test); // 输出:{ "test.c": "Case1" }
这种语法是ES6新增的,写起来特别清爽,现在大部分项目环境都支持。
方法2:方括号赋值(兼容性拉满,适合老环境)
如果你的代码需要兼容ES6之前的环境,就先创建空对象,再用方括号语法赋值:
let fileName = "test.c"; let testCase = "Case1"; let test = {}; test[fileName] = testCase; // 方括号里可以放变量,动态设置属性名 console.log(test); // 输出:{ "test.c": "Case1" }
为什么你的原代码不行?
你原来写的test.fileName = testCase,这里的.fileName是固定属性名,相当于给test对象添加了一个叫"fileName"的属性,而不是把fileName变量的值(也就是"test.c")作为属性名,所以才得不到你想要的结果~
内容的提问来源于stack exchange,提问作者Nijesh W
相关产品推荐
相关产品推荐

