JavaScript中向数组push对象时,如何用变量作为对象的键?
解决方案
你遇到的问题是因为对象字面量里的myVariable被当作固定字符串键名,而非变量的值。要实现用变量值作为对象键名,需要使用ES6的计算属性名语法,把变量放在方括号[]内即可。
修改后的代码示例
方式一:使用forEach(推荐,仅遍历执行操作)
var x = []; y.forEach(({ myVariable }) => { x.push({ [myVariable]: false }); });
方式二:直接用map生成目标数组(更简洁高效)
既然最终是要生成数组x,可以直接利用map返回新数组的特性,省去手动push的步骤:
const x = y.map(({ myVariable }) => ({ [myVariable]: false }));
原理说明
计算属性名[myVariable]会将括号内的变量解析为它的实际值,作为对象的键名。比如如果myVariable的值是"isEnabled",那么生成的对象就是{ isEnabled: false },而不是固定的{ myVariable: false }。
内容的提问来源于stack exchange,提问作者JohnDole
相关产品推荐
相关产品推荐

