如何在JavaScript对象属性中用变量字符串动态引用对象
解决方案
你尝试的data.[myVar]是语法错误,正确的动态属性访问写法是**data[myVar]**,另外因为你定义的obj1和obj2是ref响应式对象,需要通过.value获取实际数组内容,具体实现如下:
直接实现方式
- 动态获取目标响应式对象:
// myVar是从路由参数拿到的字符串,比如"obj2" const targetRef = data[myVar];
- 遍历数组处理数据:
// 直接用数组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
相关产品推荐
相关产品推荐

