如何在JavaScript中将函数参数作为返回对象的动态键名
问题原因
你代码中对象字面量的键i会被当作静态字符串键解析,不会读取参数i的实际值,所以得到的所有对象键都是固定的i。
解决方法
要实现动态键名,有两种常用实现方式:
- ES6+ 计算属性名写法(推荐,语法更简洁)
把键用方括号包裹后,JS会先计算方括号内表达式的值,再将计算结果作为对象的键名,即可实现键名和参数值匹配:
function toObj(i){ return { [i]: i }; } const numObj = s => s.map(toObj)
- 兼容旧环境的写法
如果你的运行环境不支持ES6新特性,可以先创建空对象再动态赋值:
function toObj(i){ const obj = {} obj[i] = i return obj } const numObj = s => s.map(toObj)
调用numObj([1, 2, 3, 4])即可得到你期望的[{1: 1}, {2: 2}, {3: 3}, {4: 4}]结果。
内容的提问来源于stack exchange,提问作者Perplexityy
相关产品推荐
相关产品推荐

