if / switch语句基于选择值和数组?

时间:2015-07-27 13:36:33

标签: javascript jquery arrays if-statement switch-statement

我有一个简单的select元素,它有多个值,基本上分为四类。为了尝试更高效,我认为最好将它们分组到数组中并检查“selected”值是否在其中一个中,根据选择值所在的数组打印不同的文本。 用开关来做效率也不会更高效吗?

也许它有点模糊。用户以带有多个值的下拉列表开始(例如:x1,y2,x3,y4,z1)如果x1,x3然后执行某些操作,如果y2,y4然后执行某些操作,我可以使用该语句。但我认为将这些值放入数组会更清晰(例如arrayX = x1,x3和arrayY = y2,y4。),因此脚本会检查哪个数组包含所选值,并为每个数组打印自定义消息。

经过一些修补,这是一个有效的例子:

  $( "#search2" )
        .change(function() {
            var group1 = ['PL'];
            var group2 = ['AD','RS','CH'];
            var group3 = ['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','GR','ES','NL','IR','IS','LT','LU','LV','MT','DE','NO','PT','RO','SK','SI','SE','HU','GB','IT'];
            var group4 = ['SM','MC','LI'];
            var group5 = ['QQ'];

            $("#search2 option:selected").each(function () {
                str2 += $(this).val();
                if ($.inArray(str2, group1) !== -1) {
                    groupNr ="1";
                }
                else if ($.inArray(str2, group2) !== -1) {
                    groupNr = "2";
                }
                else if ($.inArray(str2, group3) !== -1){
                    groupNr = "3";
                }
                else if ($.inArray(str2, group4) !== -1){
                    groupNr = "4";
                }
                else if ($.inArray(str2, group5) !== -1){
                    groupNr = "5";
                }
            });
            if($('#search2').val()){
                $('#submit').removeClass('hidden');
            }
        })
        .trigger( "change" );

2 个答案:

答案 0 :(得分:0)

他们是一种更简单的方法。你有一个数组并为每个值分配一个组。像

mygroupArray['IA'] = 1,     mygroupArray['KS'] = 1
mygroupArray['MN'] = 2 and so on

然后你可以做这样的事情

groupNumber = mygroupArray [optionValue] === undefined? 4:mygroupArray [optionValue]

这是更快捷方便的方法。因为你只进行一次比较。但是在初始化方面还有点多。

如果你理解,请告诉我。

答案 1 :(得分:0)

这是一种方法,全面运作的JSFiddle补充道:

var groups = [
    ['IA', 'KS'],
    ['MN', 'OK'],
    ['KE']
];

for (var i = 0; i < groups.length; i++)
{
    if (groups[i].indexOf(optionValue) >= 0)
    {
        $('.result2').text('element in group ' + (i+1));    
    }
}

检查完整的JSFiddle:https://jsfiddle.net/orvvyrhp/1/

更新:JSFiddle提供多选支持:https://jsfiddle.net/orvvyrhp/2/