我可以实现/把一个数组的开关条件
Can I implement/put an array on a switch conditional?
我正在构建我的代码时,我想到了一个奇怪的想法,我可以实现/把一个数组在一个开关?
我的意思是,我如何使codeHide
情况工作?这段代码不起作用。
当我要求设置命令并将hide()
(即codeHide[0]
放在codeHide
数组上)时,我希望switch
采用codeHide
的情况(我的if语句)并返回一个alert
,告诉我该特定数组元素的alertMessage
。
如果我把hide(background)
(即codeHide[1]
在codeHide
数组上),我想切换到codeHide
的情况下(我的If语句),并返回一个alert
,告诉我特定数组元素的alertMessage
(在is-语句中)。
希望你能理解我。
这样做它不起作用,我认为这是因为"case codeHide:
"。
这是我到目前为止所做的:
var codeHide = ['hide()', 'hide(background)'];
$(".code").on("click", function () {
var codePrompt = prompt("Set the code in the command line."),
alertMessage = "",
consoleMessage = "Used '" + codePrompt + "' command.";
switch (codePrompt) {
case codeHide:
if (codeHide[0]) {
alertMessage = "Hiding elements...";
} else {
alertMessage = "Hiding Background...";
}
break;
default:
alertMessage = consoleMessage = "We are sorry but you entered a WRONG command, try again tho!'ntyped: " + codePrompt;
break;
}
alert(alertMessage);
console.log(consoleMessage);
});
我想你是在尝试这样做
var commands = {
hide: 'hide()',
hideBg: 'hide(background)'
};
var codePrompt = prompt("Set the code in the command line."),
alertMessage;
switch (codePrompt) {
case commands.hide:
alertMessage = "Hiding elements...";
break;
case commands.hideBg:
alertMessage = "Hiding Background...";
break;
default:
alertMessage = "WRONG command";
break;
}
}
但是,您也可以使用
var commands = {
'hide()': "Hiding elements...",
'hide(background)': "Hiding Background..."
};
var codePrompt = prompt("Set the code in the command line.");
var alertMessage = commands[codePrompt] || "WRONG command";
我猜你也想运行一些功能:
var commands = {
'hide()': {
text: "Hiding elements...",
funcion: someFunctionToHide
},
'hide(background)': {
text: "Hiding Background...",
funcion: someFunctionToHideBackground
}
};
var codePrompt = prompt("Set the code in the command line."),
command = commands[codePrompt];
if(!command) {
alertMessage = "WRONG command";
} else {
alertMessage = command.text;
command.function();
}
switch
通过使用身份操作符===
将打开的值与每种可能的情况进行比较来进行操作。这意味着您可以在case
中放入一个数组,并且它将按照指定的方式工作(但对于数组来说肯定不是很直观):
var x = [1];
var a = [1];
switch (x) {
case [1]: alert("it's [1]!"); break;
case a: alert("it's a!"); break;
case x: alert("it's x!"); break;
}
这将提示"它是x!",而您可能期望前面两种情况中的任何一种都"足够好"来触发。但这就是===
的工作方式:
[1] === x // false
a === x // true
x === x // true
因此,虽然你可以在技术上使用数组,但在实践中,它实际上是非常不寻常的情况下,这样做是有用的。
回到你的代码,因为你感兴趣的值是字符串,似乎使用一个简单的对象作为映射会做得很好:
var commands = {
"hide()": {
alert: "Hiding elements...",
console: "Blah blah"
}.
"hide(background)": {
alert: "Hiding background...",
console: "Blah blah"
}.
};
var fallback = {
alert: "Sorry, wrong command",
console: "Sorry, wrong command"
};
允许你写
var result = commands[input] || fallback;
alert(result.alert);
console.log(result.console);
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 使用window.location.htm和匹配的URL数组(一个用于桌面,一个用于移动)将桌面网站重定向到移动
- Javascript排序多维数组-一个完整的例子
- 刽子手的游戏.2数组.一个需要相应地更新另一个