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

如何在JavaScript中通过字符串访问对应名称的数组变量?

解决方法:通过字符串获取对应数组变量

情况1:数组是全局变量

如果你的数组处于全局作用域(比如示例里的name数组),可以通过window对象直接访问——因为全局变量会自动挂载到window对象上。修改后的代码如下:

<div onclick="smt(this.id)" id="name"></div>

<script>
// 全局数组
const name = ['张三', '李四', '王五'];

function smt(id) {
  // 通过window[id]获取对应数组
  const targetArray = window[id];
  console.log(targetArray); // 输出: ['张三', '李四', '王五']
}
</script>

情况2:使用对象管理数组(推荐)

直接使用全局变量容易引发命名冲突,更规范的做法是把所有需要映射的数组统一放在一个对象中,通过对象的属性名匹配传入的字符串:

<div onclick="smt(this.id)" id="name"></div>

<script>
// 用一个对象集中管理所有数组
const arrayMap = {
  name: ['张三', '李四', '王五'],
  age: [20, 25, 30],
  gender: ['男', '女', '男']
};

function smt(id) {
  // 通过对象键名获取对应数组
  const targetArray = arrayMap[id];
  console.log(targetArray); // 输出: ['张三', '李四', '王五']
}
</script>

注意事项

  • 避免使用eval():虽然eval(id)也能实现需求,但它会执行任意传入的代码,存在严重安全风险,且性能较差,绝对不推荐使用。
  • 如果数组不在全局作用域,需确保函数能访问到该数组的作用域,优先用对象管理的方式维护,避免作用域混乱。

内容的提问来源于stack exchange,提问作者emm.1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:20:50