从switch case返回一个值

时间:2013-12-03 10:47:23

标签: javascript jquery ajax

这有效(填充生成的下拉菜单):

$('dropdown_options').innerHTML = ' ';
jsonResponse.forEach(function(element){
    $('dropdown_options').innerHTML += '<option value='+ element.size + '>' element.size + '</option>';
});

但是element.size是一个数字,我需要信件。因此我做了以下功能:

getLetterOfSizeNumber: function(number) {
        var size_letter = null;
        switch (number) {
        case 44: 
            size_letter = 'XS';
            break;
        case 45:
            size_letter = 'S';
            break;
        case 46:
            size_letter = 'M';
            break;
        case 47:
            size_letter = 'L';
            break;
        case 48:
            size_letter = 'XL';
            break;
        case 49:
            size_letter = 'XXL';
            break;
        default:
            break;
        }
        return size_letter;
    }

然后我这样做:

jsonResponse.forEach(function(element){
        $('dropdown_options').innerHTML += '<option value='+ element.size + '>' + myObject.getLetterOfSizeNumber(element.size) + '</option>';

我的下拉列表填充了null个。建议?

3 个答案:

答案 0 :(得分:4)

改为使用地图

var numberToSize = {
    44: 'XS',
    45: 'S',
    46: 'M',
    47: 'L',
    48: 'XL',
    49: 'XXL'
};

// (or just remove the function altogether)
getLetterOfSizeNumber: function(number) {
    return numberToSize[number];
};

这适用于数字和字符串number值,因为它们用于访问属性值。

答案 1 :(得分:1)

  

我的下拉列表中填充了空值。建议?

我会说你的element.size会返回string,而不是number。这就是为什么你得到null

如果您在case-expression中使用字符串或替代使用parseInt(element.size)来获取真实数字,那么您的代码将会起作用。

但更先进的方法是使用一个对象,其中数字为键,字母为值,如@Nico所述。

答案 2 :(得分:0)

试试这个。

 switch(number) { 
        case 44: 
           return 'XS';           
        case 45:
            return 'S';           
        case 46:
            return 'M';          
        case 47:
            return 'L';           
        case 48:
           return = 'XL';         
        case 49:
           return 'XXL';
        default:
            return '';
}