是否有更简单的方法使许多输入相等?

时间:2015-06-20 17:27:06

标签: javascript

好的,所以目前我正在编写一个脚本,你必须把事情发生的频率和我用过的脚本"每月"表示每月一次。 但显然人们可能并不恰到好处"每月"。

所以我写这篇文章以防他们写别的东西。

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"
}

问题是我有很多这类投入,我想知道是否有更简单的方法。

4 个答案:

答案 0 :(得分:3)

你可以使用

if(RepeatDay.toLowerCase().indexof('month')>-1){
    var RepeatDay = "Monthly";
}

但正如评论中所建议的那样,在这种情况下给用户下拉菜单而不是文本输入会更好

答案 1 :(得分:1)

正如已经指出的那样,我强烈建议让用户从您控制的一组选项中进行选择。

如果你真的想要检查这样的列表,你有几个选项(最有可能与toLowerCase结合以减少你必须测试的事物数量):

  1. 您可以使用数组as Ankit demonstrated

  2. 您可以使用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;
        // ...
    }
    
  3. 您可以将对象用作地图,这样可以轻松地映射"每周"等等:

    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());
});