我想减少多个组合变量的初始化。
我的目标是创建一个函数并传递一个带变量的函数。 如果我将变量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-+
在这种情况下,我定义的上述变量有很多组合可以满足所有可能的组合。我想从上面的组合验证用户输入,我也不想写这么多变量。有没有可能的简单解决方案? 请建议。感谢
答案 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);
}
有更多优雅的路径,但这应该让您了解JavaScript。
答案 1 :(得分:0)
我会声明一个全局对象来将变量存储为键:
var globals = {
"x": "123",
"y": "456",
"z": "789"
};
请注意,您可以参考您的&#34;变量&#34;通过globals.x
或globals.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。