JavaScript拼接变量后如何获取对应数组元素的值?求助
解决方法:从字符串表达式获取数组元素值
嘿,我来帮你搞定这个问题~你现在拼接出来的是字符串形式的表达式"TTP01[0]",没法直接拿到对应的数组元素值,这里有几种安全又好用的解决办法:
方法1:利用全局对象访问(适用于全局变量)
如果你的TTP01是全局变量,那么它会自动挂载到浏览器的window对象上,你可以通过对象属性访问的方式来获取数组和对应元素:
var objname = "TTP"; var count = "01"; var xy = 0; // 假设x*y计算后为0 // 先拼接出数组的名称字符串 var arrayName = objname + count; // 通过window对象访问数组,再取对应索引的元素 var targetValue = window[arrayName][xy]; console.log(targetValue); // 输出2
这个方法比直接用eval安全得多,不会有执行恶意代码的风险。
方法2:用容器对象管理数组(推荐最佳实践)
更推荐的方式是把所有这类数组统一放在一个容器对象里,既避免污染全局作用域,又更便于管理:
// 先定义一个容器,存放所有需要访问的数组 var arrayContainer = { TTP01: [2,0,0,0,0,0,4,6,1,4,0,9,1] }; var objname = "TTP"; var count = "01"; var xy = 0; var arrayKey = objname + count; var targetValue = arrayContainer[arrayKey][xy]; console.log(targetValue); // 输出2
这种方式可控性更强,是开发中的最佳实践。
方法3:使用eval(不推荐,谨慎使用)
如果你实在需要用字符串表达式直接求值,可以用eval,但强烈不推荐——因为eval会执行任意传入的代码,一旦objname或count包含用户输入的恶意内容,会带来严重的安全风险:
var objname = "TTP"; var count = "01"; var xy = 0; var expr = objname.concat(count, "[", xy, "]"); var targetValue = eval(expr); console.log(targetValue); // 输出2
除非你能100%确保表达式内容的安全性,否则别用这个方法。
内容的提问来源于stack exchange,提问作者Ashok Charu
相关产品推荐
相关产品推荐

