2012-01-01 1 views
0

Я строю querystring и хочу исключить ключи, если vals пусты, что правильно?Каков правильный способ проверки пустой/пустой строки в js перед включением в params?

setQueryString: function() { 
    var keyword = $('#keyword').val(); 
    //how to exclude it if keyword is empty? 
    var params = {   
     "keyword": $.trim(keyword) 
    }; 

    return params; 
} 

принять во внимание, что у меня будет 20+ входы, как keyword..trying, чтобы избежать много IF заявления

+0

Я думаю, что лучше позволить нулевые и пустые значения в конкретизации ваши объекты и проверить нулевые значения, когда вы его вызываете, таким образом, вы можете сэкономить себе целую кучу ifs в местах, где вам это не нужно. (Может быть, какая-то другая часть программы не заботится о том, чтобы «ключевое слово» было пустым или пустым, и ему нужно только «queryData»?) –

ответ

1

Не устанавливайте его, если он пустой это все:

var keyword = $.trim($('#keyword').val()); 
var params = {}; 

if(keyword) { 
    params.keyword = keyword; 
} 

return params; 

(редактировать)

Если у вас есть много вещей, чтобы ССЭЧ к, рассмотреть вопрос об использовании либо цикла:

var items = { 
    keyword: $.trim($('#keyword').val()) 
    // etc. 
}; 
var params = {}; 

for(var x in items) { 
    if(items.hasOwnProperty(x) && items[x]) { 
     params[x] = items[x]; 
    } 
} 

return params; 

или функции какого-либо рода, например:

var params = {}; 

function check(name) { 
    var value = $.trim($('#' + name).val()); 

    if(value) { 
     params[name] = value; 
    } 
} 

check('keyword'); 
// etc. 

return params; 
+0

да, но что, если у меня есть еще 20 входов для проверки? он станет грязным кодом с множеством операторов if. интересно, если есть более чистый способ. –

+0

@StewieGriffin: Отредактировано для других возможностей. – Ryan

0

Как пустая строка является falsy значения в JavaScript вы можете simpley проверить, если вал() правда:

setQueryString: function() { 
    var keyword = $('#keyword').val(); 
    if(keyword){ 
    var params = {   
     "keyword": $.trim(keyword) 
    }; 

    return params; 

    } 
} 
0

Try что-то вроде:

setQueryString: function() { 
    var keyword = $.trim($('#keyword').val()); 


    var params = {}; 

    if(keyword !== undefined && keyword !== '') { 
     params.keyword = keyword; 
    } 

    return params; 
} 
2

Если у вас есть несколько Params, и вы не хотите много, если заявления:

setQueryString: function() { 
    var params = { 
     'param1': $.trim($('#param1').val()), 
     'param2': $.trim($('#param2').val()) 
    } 

    for (p in params) { 
     if (params.p == null || params.p == '') { 
      delete params.p; 
     } 
    } 

    return params; 
} 
Смежные вопросы