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

如何在JavaScript对象属性中用变量字符串动态引用对象

解决方案

你尝试的data.[myVar]是语法错误,正确的动态属性访问写法是**data[myVar]**,另外因为你定义的obj1和obj2是ref响应式对象,需要通过.value获取实际数组内容,具体实现如下:

直接实现方式

  1. 动态获取目标响应式对象:
// myVar是从路由参数拿到的字符串,比如"obj2"
const targetRef = data[myVar];
  1. 遍历数组处理数据:
// 直接用数组forEach遍历,比Object.keys更简洁
targetRef.value.forEach(item => {
  formData.append(item.name, item.title);
});

优化写法(适合多对象场景)

如果后续会新增更多同类对象,建议在Pinia store里把这些数组统一放到一个父对象中,维护起来更方便:

// 在Pinia的data store中定义
const characterGroups = ref({
  obj1: [{name:"Doug",title:"main character"},{name:"Porkchop",title:"dog"}],
  obj2: [{name:"Patty",title:"Other character"},{name:"Skeeter",title:"friend"}]
});

动态访问时的代码:

const targetArr = data.characterGroups.value[myVar];
targetArr.forEach(item => {
  formData.append(item.name, item.title);
});

常见错误说明

  • data.myVar:这种写法会把myVar当成store的属性名,而不是变量myVar的取值,所以无法匹配到obj1或obj2。
  • data.[myVar]:属于语法错误,动态属性访问的括号前不能加.,正确格式是对象[变量名]。

内容的提问来源于stack exchange,提问作者Eric.18

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:05:39