javascript - 对多个条件使用if语句与switch case

时间:2017-05-04 13:47:29

标签: javascript

我有一种情况,我想写一些内容来检查页面网址的字符串。

url example 1 - http://something.com/else/apples
url example 2 - http://something.com/else/oranges
url example 3 - http://something.com/else/bananas
...
url example 10 - http://something.com/else/kiwis

伪代码:

if(window.location.href.indexOf('apples')>-1)
{
    alert('apples');
}
if(window.location.href.indexOf('oranges')>-1)
{
    alert('oranges');
}
....

正如你所看到的那样,拥有多个if语句看起来相当难看,所以我正在寻找一些关于如何使用单个if语句或可能的switch语句来实现这一点的建议。我对一个带有几个“OR”语句的if语句有了一个想法,但我不确定这是否是解决这个问题的最好方法。

谢谢

6 个答案:

答案 0 :(得分:4)

这样的东西?

let urls = ["url1.com", "url2.com"]

urls.forEach((url) => {
    if (window.location.href.indexOf(url) > -1) {
        alert("Do something")
    }
})

我们的想法是使用数组而不是许多变量,并使用forEach

循环遍历其项目

答案 1 :(得分:1)

喜欢这个?

var fruits = ['apples', 'oranges', 'bananas'];

var link = window.location.href.split("/").pop();

if (fruits.includes(link)) {
   alert(link);
}

答案 2 :(得分:0)

喜欢这个吗?

alert(window.location.href.split("/").pop());

这需要在最后/之后发生的任何事情并提醒它。当然,这会提醒任何。如果有"白名单"要提醒的事情,那么@Purefan可能会有更好的解决方案。这只是一个快速简单的解决方案。

答案 3 :(得分:0)

如果您需要根据URL的内容输出特定信息,那么我建议使用JSON快速获取信息。这将允许您避免使用循环或任何条件语句,并且您基本上可以获得所需的任何信息。该信息甚至可以包含要加载的HTML页面/元素 -

var pageInfo = {
  "apple": "some info about apples",
  "orange": "some other info about oranges",
  "banana": "more banana information"
}

var urlPage = window.location.href.split("/").pop();

var info = pageInfo[urlPage];

//to test -
console.log(pageInfo["apple"]);
console.log(pageInfo["orange"]);
console.log(pageInfo["banana"]);

答案 4 :(得分:0)

您要做的是将特定值映射到特定结果。您可以使用实际地图执行此操作。您可以将任何内容与地图中的值相关联,甚至是函数。然后,使用您喜欢的方式循环对象。这是一个愚蠢的例子:

var fruitMap = {
  'oranges': 'I don\'t like those.',
  'apples': 'Three a day keeps the doctor away.'
};

for (var fruit in fruitMap) {
  if (window.location.href.indexOf(fruit) > -1) {
    alert(fruitMap[fruit]);
  }
}

答案 5 :(得分:0)

switch的行为与if相同,用于增加代码的可读性

$('#fruit').keyup(function() {

  var c = $(this).val();
  var fruits = ['apple', 'banana', 'pear', 'orange', 'raspberry', 'strawberry', 'wildberry', 'cranberry', 'blueberry', 'limone', 'grapefruit', 'kiwi', 'mango'];

  for (var i = 0; i < fruits.length; i++) {
    switch (c) {
      case fruits[i]:
        console.log(fruits[i]);
        break;
      default:
        '';
        break;
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Enter a fruit: <input type="text" id="fruit">