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

JavaScript中如何将变量名转换为字符串?含动态数组场景需求

如何在JavaScript中将变量名转换为对应的字符串?

现有代码:

var a = "aa", b= "bb", c = "cc", d="dd", e="ee"; array = [a,b,c,d,e] // 输出 ["aa", "bb", "cc", "dd", "ee"]

请问在JavaScript中能否将变量a、b、c、d、e转换为对应的字符串"a"、"b"、"c"、"d"、"e"?此外数组元素可能是动态的或长度更长,恳请解答!

当然可以实现,但得看具体的代码结构,我给你两种可行的方案,其中第一种是我非常推荐的稳定方案:

方案一:将变量存入对象(最优解)

JavaScript里直接从单独的变量本身提取它的名字是做不到的,但如果把这些变量放进一个对象里,对象的键就是变量名,我们可以轻松通过Object.keys()获取所有键名,完美支持动态数量的变量,维护起来也方便。

示例代码:

// 把所有变量放进一个对象里,键就是你要的变量名字符串
const varsObj = {
  a: "aa",
  b: "bb",
  c: "cc",
  d: "dd",
  e: "ee"
};

// 获取所有变量名组成的数组
const varNames = Object.keys(varsObj); // 输出 ["a", "b", "c", "d", "e"]

// 如果还需要原来的值数组,用Object.values()就能拿到
const valuesArray = Object.values(varsObj); // 输出 ["aa", "bb", "cc", "dd", "ee"]

不管你后续要加多少个变量,只要往对象里加属性就行,Object.keys()会自动帮你收集所有键名,完全不用修改其他代码,非常适合动态场景。

方案二:Hack式提取(不推荐生产环境用)

如果因为某些原因必须保留单独的变量声明,也有一个取巧的方法,但这个方法非常依赖代码的字面量形式,一旦代码被压缩或者变量形式变化就会失效,所以只适合临时测试用。

示例代码:

var a = "aa", b= "bb", c = "cc", d="dd", e="ee";

function extractVarNames(...args) {
  // 通过把函数参数转换成字符串,再用正则匹配提取变量名
  const funcStr = extractVarNames.toString();
  return funcStr.match(/\((.*?)\)/)[1].split(', ');
}

// 调用时必须把变量一个个传进去
const varNames = extractVarNames(a, b, c, d, e); // 输出 ["a", "b", "c", "d", "e"]

为什么不推荐?比如当你用打包工具压缩代码时,变量名a、b会被改成x、y这类短标识符,这时候提取出来的就不是你原来的变量名了;而且如果变量是表达式(比如extractVarNames(a + b, c)),正则也会匹配出错。

总结

如果可以重构代码,方案一绝对是首选,稳定、易维护还支持动态扩展;方案二只能作为临时的权宜之计,别在生产代码里用。

内容的提问来源于stack exchange,提问作者user1234

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:55:17