如何将变量值传入JavaScript字典?赋值失败问题求助
解决方法
问题出在你创建对象时的键名写法——直接写thisUser:会把它当作固定字符串键,而非变量的值。要实现用变量作为对象键,需要使用方括号语法,具体修改如下:
修改后的代码
var x; var newArray = []; // 假设你已声明该数组 for (var x = 0; x < users['suggestions'].length; x++) { var thisUser = users['suggestions'][x].username; // 用方括号包裹变量,将其值作为键名 var User = { [thisUser]: { 'user': users['suggestions'][x].username, 'bio': users['suggestions'][x].bio, 'id': users['suggestions'][x].id, } }; newArray.push(User); }
原写法无效的原因
- 普通对象字面量中,
key: value的key会被解析为字符串,所以thisUser:最终生成的是键名为"thisUser"的属性。 - 你尝试的
${thisUser}是模板字符串,本质仍是字符串,同样会被当作固定键名,无法解析变量值。
可选优化写法
也可以先创建空对象,再动态添加属性,效果一致:
var User = {}; User[thisUser] = { 'user': users['suggestions'][x].username, 'bio': users['suggestions'][x].bio, 'id': users['suggestions'][x].id, };
修改后运行结果会符合你的预期:
{ "John": { "user": "John", "bio": "Hello, im new!", "id": 23 } }
内容的提问来源于stack exchange,提问作者greensky
相关产品推荐
相关产品推荐

