javascript:switch语句中的常用命令

时间:2014-07-15 15:16:38

标签: javascript function switch-statement

我有一种情况使用switch来过滤掉一个大数组。它就像

var myArray = ['a','b','c','d'];
$.each( myArray, function (ind, elem) {
    switch (true) {
        case (elem === 'a'):
            // do something to a
            break;
        case (elem === 'b'):
            // do something to b (but not to a)
            break;
        always: // do this if we have done something
            alert('we have done something!');
    }
});

所以我希望ab发出警报,但不希望cd发出警告。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:4)

首先,我会更恰当地写出switch

switch (elem) {
  case 'a':
    // 'a' code
    break;
  case 'b':
    // 'b' code
    break;
  default:
    // anything else
 }

请注意,它是您正在寻找的default标签。另一方面,如果你只是想在匹配时做某事,那么switch可能不是最干净的方法,因为没有一种好的方法来为每个案例包含样板代码(除了只需复制/粘贴)。

您可以使用单独的函数,并且可以构造函数以便设置标志:

  var didSomething = false;

  function doSomething(fn) {
    fn();
    didSomething = true;
  }

  switch (elem) {
    case 'a':
      doSomething(function() { /* 'a' code */ });
      break;
    case 'b':
      doSomething(function() { /* 'b' code */ });
      break;
   }

   if (didSomething) {
     alert("did something");
   }

或者,您可以制作地图:

   var actions = {
     'a': function() { /* 'a' code */ },
     'b': function() { /* 'b' code */ }
   };

   if (actions[elem]) {
     actions[elem]();
     alert("did something");
   }