如何在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
相关产品推荐
相关产品推荐

