You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将JavaScript变量绑定为JSON对象键的问题求助

问题解决

你遇到的问题是因为在对象字面量中直接写projectName时,它会被当作字符串字面量键,而不是取变量projectName的值。要实现用变量值作为对象键,需要使用ES6的计算属性名语法,用方括号把变量包裹起来。

另外你的代码里还有一个小问题:定义了projectName变量但始终没赋值,循环里给的是name变量,所以需要把循环中获取的项目名赋值给projectName。

修正后的代码:

var projectName = '';
let tempArray = [];
let output = {};        
for(let i = 0; i < myJsonArray.length; i++){
    // 将获取到的项目名赋值给projectName变量
    projectName = myJsonArray[i].Project;
    tempArray.push(myJsonArray[i]);
}
// 使用计算属性名,用方括号包裹变量,取变量值作为键
output = { [projectName]: tempArray };
console.log(JSON.stringify(output));

为什么这样有效?

  • 普通对象字面量写法{ projectName: tempArray }中,projectName是固定的字符串键名,不会解析变量。
  • 计算属性名{ [projectName]: tempArray }会先计算方括号内的表达式(这里就是取projectName变量的值),将结果作为对象的键名。

额外优化建议

如果你的myJsonArray里存在多个不同项目名,上面的代码只会保留最后一个项目名的数据,此时需要在循环里做分组处理:

let output = {};        
for(let i = 0; i < myJsonArray.length; i++){
    const projectName = myJsonArray[i].Project;
    // 如果当前项目名对应的数组不存在,先初始化空数组
    if(!output[projectName]){
        output[projectName] = [];
    }
    output[projectName].push(myJsonArray[i]);
}
console.log(JSON.stringify(output));

这样可以自动把不同项目名的数据分组到对应的数组中。

内容的提问来源于stack exchange,提问作者Ramaraju.d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:20:35