使用多种组合分配变量的最佳方法是什么

时间:2016-01-21 18:05:05

标签: javascript arrays variables scripting initialization

我想减少多个组合变量的初始化。

我的目标是创建一个函数并传递一个带变量的函数。 如果我将变量x传递给函数值(x);我应该输出为“123”。类似地,如果我将变量xy传递给函数值(xy),那么我应该输出为“123456”。基本上,我想连接变量

这是javascript代码

   var x = "123";
   var y = "456";
   var z = "789";
   var a = "0-+";

   var xy = x + y;
   var yz = y + z;
   var zx = z + x;
   var xa = x + a;
   var ya = y + a;
   var za = z + a;
   var ax = a + x;
   var ay = a + y;
   var az = a + z;
   var xz = x + z;
   var yx = y + x;
   var zx = z + x;
   var zy = z + y;
   var xyz = x + y + z;
   var xyza = x + y + z + a;

   function value(input) {
         console.log(input);
   }

示例执行如下:

  value(x); //output: 123
  value(y); //output: 456
  value(xy); //output: 123456
  value(za); //output: 7890-+

在这种情况下,我定义的上述变量有很多组合可以满足所有可能的组合。我想从上面的组合验证用户输入,我也不想写这么多变量。有没有可能的简单解决方案? 请建议。感谢

2 个答案:

答案 0 :(得分:0)

您需要使用某种形式的迭代数组或对象。举个例子:

var x = "dave";
var y = "bill";
var z = "john";
var a = "suzan";
var people = [x,y,z,a];

for(i=0; i<people.length; i++) {
    for(x=0; x<people.length; x++) {
        value(people[i] + people[x]);
        for(y=0; y<people.length; y++) {
            value(people[i] + people[x] + people[y]);
            for(z=0; z<people.length; z++) {
                value(people[i] + people[x] + people[y] + people[z]);
            }
        }
    }
}

// not sure why you'd have a function to wrap console.log(), but...
function value(input) {
    console.log(input);
}

请参阅in action on jsFiddle

有更多优雅的路径,但这应该让您了解JavaScript。

答案 1 :(得分:0)

我会声明一个全局对象来将变量存储为键:

var globals = {
   "x": "123",
   "y": "456",
   "z": "789"
};

请注意,您可以参考您的&#34;变量&#34;通过globals.xglobals.y(您可以使用较短的关键字替换globals以减少代码)。

定义&#34;变量名称需要额外的努力。带引号。 但是,现在你可以使用:

alert(Combinate("xz"));
// output: 123789

使用以下功能:

function Combinate(phrase) {
  result = "";
  for (var i = 0, len = phrase.length; i < len; i++) {
    result += globals[phrase[i]];
  }
  return result;
}

这里是JSFiddle