如何在 javascript 中创建带串联的变量?

How to create variable with concatenation in javascript?

我的代码很长,想简化一下。我不认为我们可以使用字符串连接来创建不同的变量名。还有其他办法吗

If(Something){
    var a = some.Test1.x;
    var b = some.Test1.y;
    var c = some.Test1.z;
    var d = some.Test1.p;
}

If(SomethingElse){
    var a = some.Test2.x;
    var b = some.Test2.y;
    var c = some.Test2.z;
    var d = some.Test2.p;
}

If(OneMore){
    var a = some.Test3.x;
    var b = some.Test3.y;
    var c = some.Test3.z;
    var d = some.Test3.p;
}

可能会创建一些像这样的功能,我知道这不对但类似的东西。

function test(s){
  a = some.s.x;
  b = some.s.y;
  c = some.s.z;
  d = some.s.p;
}

您可以使用类似数组的语法

function test(s) {
    var a,b,c,d;
    if (s === Something) {
        test = "Test1";
    }
    if (s === SomethingElse) {
        test = "Test2";
    }
    if (s === OneMore) {
        test = "Test3";
    }

    a = some[test].x;
    b = some[test].y;
    c = some[test].z;
    d = some[test].p;
}

这是功能等效但从未使用过的 eval 语法的改进版本:

eval("a = some."+test+".x");
function test(index){
  t = some["Test" + index];

  a = t.x;
  b = t.y;
  c = t.z;
  d = t.p;
}

和执行:

test(1); test(2); test(3)