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

如何不直接调用对象Key名,动态访问对象的属性值

问题原因
  • 变量名大小写拼写不匹配:代码中定义键名数组时使用的变量名是PersonsArr,后续取值时写为小写开头的personsArr,JavaScript 对大小写敏感,该笔误会先触发变量未定义的异常。
  • 动态键访问语法错误:点操作符.只能访问对象的静态字面量键,你将键名存入Viktor变量后,obj.Viktor是尝试访问对象上名为Viktor的键,而非读取Viktor变量的值作为键名。要使用动态变量作为键访问对象属性,必须使用方括号语法obj[变量名]。
修正后的实现代码
const obj = {
 viktor: ['apple', 'grape', 'orange', 'apple', 'banana'],
 kate: ['grape', 'orange', 'apple', 'grape', 'banana'],
};
// 统一变量名大小写
const personsArr = Object.keys(obj);
const viktorKey = personsArr[0];
// 用方括号语法访问动态键
console.log(obj[viktorKey]);
// 输出:['apple', 'grape', 'orange', 'apple', 'banana']
批量遍历所有人员数组的实现(无需写死键名)

如果要逐一访问所有人员对应的数组,可以直接遍历Object.values,不需要手动取索引:

const obj = {
 viktor: ['apple', 'grape', 'orange', 'apple', 'banana'],
 kate: ['grape', 'orange', 'apple', 'grape', 'banana'],
};
// 直接遍历所有值,无需显式调用键名
for (const fruitArr of Object.values(obj)) {
  console.log(fruitArr);
}
// 依次输出viktor的数组、kate的数组

如果需要同时拿到键名和对应的数组,可以用Object.entries:

for (const [personName, fruitArr] of Object.entries(obj)) {
  console.log(`${personName}的水果数组:`, fruitArr);
}

内容的提问来源于stack exchange,提问作者Александр Ястребов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:33:02