如何在JavaScript中获取循环变量的原始名称?

huangapple go评论52阅读模式
英文:

How to get the original name of loop variables in JavaScript?

问题

在以下示例代码中,函数"getOriginalName"不存在,但这是我正在寻找的:

for(let variable of [var1, var2, var3]) {
    console.log("Value: " + variable);
    console.log("Name: " + getOriginalName(variable));
}

在我的梦中,getOriginalName会返回"var1"、"var2"和"var3"。

我知道你可以通过以下方式访问变量"x"的名称:

varName = Object.keys({x})[0]

然而,在我的情况下,这并不能帮助我,因为循环变量在每次迭代中都被称为"variable"。所以,是否没有办法迭代变量列表并仍然获取这些变量的名称呢?

英文:

In the following example code, the function "getOriginalName" does not exist, but that is what I am looking for:

for(let variable of [var1, var2, var3]) {
    console.log("Value: " + variable);
    console.log("Name: " + getOriginalName(variable));
}

In my dreams, getOriginalName would return "var1", "var2" and "var3".

I know that you can access the name of variable "x" with:

varName = Object.keys({x})[0]

However, in my case this does not get me far, as the loop variable is called "variable" in each iteration.
So is there no way to iterate over a list of variables and still get the name of these variables?

答案1

得分: 0

很抱歉,JavaScript 中没有内置的方法可以在运行时访问变量名称,因此无法直接实现您的要求。不过,您可以通过使用对象数组来绕过这个限制,其中每个对象包含变量名作为键和相应值作为值。以下是一个示例:

const var1 = 'apple';
const var2 = 'banana';
const var3 = 'cherry';

const variables = [
  {name: 'var1', value: var1},
  {name: 'var2', value: var2},
  {name: 'var3', value: var3}
];

for (let obj of variables) {
  console.log('Value: ' + obj.value);
  console.log('Name: ' + obj.name);
}

这段代码将产生以下输出:

Value: apple
Name: var1
Value: banana
Name: var2
Value: cherry
Name: var3

这种方法允许您在迭代过程中跟踪变量名称和它们的值。请注意,这种方法要求您手动创建和维护 variables 数组,这可能不适用于所有用例。

英文:

Unfortunately, there is no built-in way to achieve this in JavaScript, as variable names are not accessible during runtime. However, you can work around this limitation by using an array of objects, where each object contains the variable name as a key and its value as the corresponding value. Here's an example:

const var1 = 'apple';
const var2 = 'banana';
const var3 = 'cherry';

const variables = [
  {name: 'var1', value: var1},
  {name: 'var2', value: var2},
  {name: 'var3', value: var3}
];

for (let obj of variables) {
  console.log('Value: ' + obj.value);
  console.log('Name: ' + obj.name);
}

This code will produce the following output:

Value: apple
Name: var1
Value: banana
Name: var2
Value: cherry
Name: var3

This workaround allows you to keep track of both the variable names and their values during iteration. Note that this approach requires you to manually create and maintain the variables array, which may not be ideal for all use cases.

答案2

得分: 0

根据您的评论,您可以使用一个包含键值对的对象:

let var1 = 1;
let var2 = 2;
let var3 = 3;

Object.entries({
  var1,
  var2,
  var3
}).forEach(([k, v]) => {
  console.log("Name: " + k);
  console.log("Value: " + v);
});

请注意,这是您提供的代码段的翻译部分。

英文:

Based on your comment, you can use an object containing key value pairs:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

let var1 = 1;
let var2 = 2;
let var3 = 3;

Object.entries({
  var1,
  var2,
  var3
}).forEach(([k, v]) =&gt; {
  console.log(&quot;Name: &quot; + k);
  console.log(&quot;Value: &quot; + v);
});

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年5月25日 21:13:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/76332695.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定