好的,所以目前我正在编写一个脚本,你必须把事情发生的频率和我用过的脚本"每月"表示每月一次。 但显然人们可能并不恰到好处"每月"。
所以我写这篇文章以防他们写别的东西。
if (RepeatDay === "once a month" || RepeatDay === "Once a Month" || RepeatDay === "every month" || RepeatDay === "month" || RepeatDay === "Month" || RepeatDay === "monthly"|| RepeatDay === "Once A Month"){
var RepeatDay = "Monthly"
}
问题是我有很多这类投入,我想知道是否有更简单的方法。
答案 0 :(得分:3)
你可以使用
if(RepeatDay.toLowerCase().indexof('month')>-1){
var RepeatDay = "Monthly";
}
但正如评论中所建议的那样,在这种情况下给用户下拉菜单而不是文本输入会更好
答案 1 :(得分:1)
正如已经指出的那样,我强烈建议让用户从您控制的一组选项中进行选择。
如果你真的想要检查这样的列表,你有几个选项(最有可能与toLowerCase
结合以减少你必须测试的事物数量):
您可以使用数组as Ankit demonstrated。
您可以使用switch
语句,它还可以让您轻松映射其他值,例如"每周"等等:
switch (RepeatDay.toLowerCase()) {
case "once a month";
case "every month";
case "month";
case "monthly":
RepeatDay = "Monthly"
break;
case "weekly":
case "once a week":
RepeatDay = "Weekly";
break;
// ...
}
您可以将对象用作地图,这样可以轻松地映射"每周"等等:
var repeatOptions = {
"once a month": "Monthly",
"every month": "Monthly",
"month": "Monthly",
"monthly": "Monthly",
"weekly": "Weekly",
"once a week": "Weekly",
// ...
};
...然后:
RepeatDay = repeatOptions[RepeatDay.toLowerCase()];
if (!RepeatDay) {
// Invalid option specified
}
答案 2 :(得分:1)
我建议您以不同的方式思考收集用户输入数据。
带有选项的下拉列表对您和用户更有用。
其他答案可行。但是认为用户仍然需要输入值,他们需要添加某些单词,以便输入按预期工作。您将在代码中以许多不必要的解释器消息或验证结束。
不知道您的确切建议,但在下拉菜单中选择间隔类型(每月,每周,每年,每日)和类型编号的输入,以了解在该类型的间隔期间发生的次数应该有效更直观。
对于mi,这是您需要处理的有效值。
(x是随机数)
xper month
XM
x for month
x次
x M
每10日
一旦m
每个m的第一个mmonday
仅在6月
等等......
你不想要数千个案例的数组,显然你无法验证单词month或word m是否存在(再次参阅exaples)。
答案 3 :(得分:-2)
您可以创建一个数组
webpack-runner.js
注意:indexOf在IE< 9中不起作用,因此您需要以经典的方式进行操作
var settings = {
buildNumber: 100
};
// Can I pass settings into webpack config such that
// app.js will be able to access it with require('settings')?
var config = {
entry: "./app.js",
output: {
path: __dirname,
filename: "build.js"
}
};
webpack(config, function(err, stats) {
console.log(stats.toString());
});