Javascript 什么';在包含到参数之前,检查js中的空字符串是否正确?

Javascript 什么';在包含到参数之前,检查js中的空字符串是否正确?,javascript,jquery,Javascript,Jquery,我正在构建一个查询字符串,如果VAL为空,我想排除键,正确的方法是什么 setQueryString: function () { var keyword = $('#keyword').val(); //how to exclude it if keyword is empty? var params = { "keyword": $.trim(keyword) }; return params; } 考虑到,

我正在构建一个查询字符串,如果VAL为空,我想排除键,正确的方法是什么

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

    return params;
}

考虑到,我将有20多个输入,如关键字..尽量避免使用大量IF语句

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;

如果它是空的,则不要设置它:

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;

由于空字符串在JavaScript中是假值,您可以简单地检查val()是否为真:


由于空字符串在JavaScript中是假值,您可以简单地检查val()是否为真:

尝试以下方法:

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


    var params = {};

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

    return params;
}
尝试以下方法:

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


    var params = {};

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

    return params;
}

如果您有多个参数,并且不需要很多If语句:

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;
}

如果您有多个参数,并且不需要很多If语句:

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;
}

我相信你需要
扩展

我相信你需要
扩展

是的,但是如果我还有20个输入要检查呢?它将成为一个混乱的代码,包含大量的if语句。想知道是否有更干净的方法。@Studiegriffin:为其他可能性而编辑。是的,但是如果我还有20个输入要检查呢?它将成为一个混乱的代码,包含大量的if语句。不知道是否有更干净的方法。@StudieGriffin:为其他可能性而编辑。我认为更好的设计是在对象的实例化中允许空值和空值,并在调用时测试空值,这样,您可以在不需要的地方保存一大堆ifs。(也许程序的其他部分不关心“关键字”是否为null或空,只需要“queryData”?)我认为更好的设计是在对象的实例化中允许null和空值,并在调用时测试null值,这样,您就可以在不需要的地方保存一大堆if。(可能程序的其他部分不关心“关键字”为null或空,只需要“queryData”?)