找到等于另一个变量值的变量

时间:2012-03-25 12:32:26

标签: javascript jquery

我在编写脚本时遇到了一个令人困惑的事实。

如何找到等于另一个变量值的变量。然后,获取该变量的值。

以下是一个例子:

var result;
var 1 = "john";
var 2 = "amy";
var 3 = "micheal";

var info = "1";

当var info设置为1时,脚本将查找变量1,其值为JOHN,然后获取值john。然后将结果的值设置为“john”。

同样的事情,

当var info设置为2时,脚本将查找变量2,其值为AMY,然后获取值amy。然后将结果的值设置为“amy”。

依旧......

我的信息变量的值未确定。它可以是1,2或3,由用户事件设置/确定。

P / S我可以使用if和else,但我想知道如何做到这一点。 :)

那我怎么能这样做呢?

6 个答案:

答案 0 :(得分:4)

您可能想要做一些截然不同的事情:

var result;

var names = {
  '1': 'john',
  '2': 'amy',
  '3': 'michael'
};

var info = "1";
result = names[info];

这会将'john'放入result

你知道,这定义了一个叫做“查找表”的东西,并将其保存到names中。然后,您可以使用“键”(在您的情况下:1,2,3)来查找值。写names[info]会在info内查找,并获取其值,在上例中为"1"。然后,它会在"1"中查找密钥names,并看到"1"的值为'john'

我知道这并不是你所要求的,但我怀疑它可能会有所帮助。

答案 1 :(得分:1)

数字不是合法的变量名,但你可以使用一些邪恶来做你想做的事:http://jsfiddle.net/2mAeh/2/(仅在Safari中测试过)。 为了清楚起见,我不建议这样做。这很邪恶。

var result;
var a = "amy";
var b = "john";
var c = "micheal";
var info = "a";

var variable = eval("info"); // just to satisfy your requirement, same as info
result = eval(variable);

alert(variable + ' = ' + result);

处理此问题的更好方法是使用地图,使用“变量名称”作为键。在这种情况下,您可以使用数字作为键,但为了保持一致性,我将使用与其他示例相同的键。

var map = { "a": "Amy", "b" : "John", "c" : "micheal" };
var info = "a";

alert( info + ' = ' + map[info] );

答案 2 :(得分:1)

使用window[var]

one = 'two';

two = '1';

alert(window[one]); // Alerts: 1

答案 3 :(得分:0)

  

那我怎么能这样做呢?

你不能。(开箱即用)
您无法仅知道变量名称的值。

如果您真的想要这样做,并想用意大利面条代码付款,请看一下:
Get variable name. javascript "reflection"

或按照@tvanfosson的建议使用eval来获取变量,这是危险的并且已弃用。


  • 请注意javascript中的变量不能以数字开头。 var 1 = "john"; =>的无效

javscript variables names rules

答案 4 :(得分:0)

像这样,

function findVariableByName(info){// info is 1, 2, 3

var result;
this['1'] = "john";
this['2'] = "amy";
this['3'] = "micheal";
result = this[info];
alert(result);
return result;
}

findVariableByName(1);

<强>更新

如果您更改下面的代码,如果它在全球范围内,

var result; var 1 =“john”; var 2 =“amy”; var 3 =“micheal”; var info =“1”;

var one = 'john';
var two = 'amy';
var three = 'micheal';
var info = 'one';

你可以,

window[info] // gives you john

答案 5 :(得分:0)

您可以通过设置对象来执行此操作:

// Store your object
var obj = {result: null, a: "john", b: "amy", c: "michael", info: "1"}

// Iterate like so.  
    for(var key in obj) {
        if(obj[key] == info){
          alert(key);
        }
    }

我没有检查过这段代码,但它应该有效。祝你好运!