使用jquery-out-of-the-box测试空字符串的最佳方法是什么?

Mar*_*tin 222 javascript jquery

使用jquery-out-of-the-box测试空字符串的最佳方法是什么,即没有插件?我试过这个.

但它至少没有开箱即用.使用内置的东西会很好.

我不想重复

if (a == null || a=='')
Run Code Online (Sandbox Code Playgroud)

无处不在,如果有的 if (isempty(a)) 话可用.

Dav*_*ing 539

if (!a) {
  // is emtpy
}
Run Code Online (Sandbox Code Playgroud)

忽略字符串的空格:

if (!a.trim()) {
    // is empty or whitespace
}
Run Code Online (Sandbox Code Playgroud)

如果您需要传统支持(IE8-)的trim(),使用$.trim填充工具.

  • 如果你还需要只用空格匹配字符串,最好使用`if(!$ .trim(a))` (20认同)
  • 当您输入0时,接受的答案将失败,但它将适用于1,2,3,4等. (16认同)
  • @CoffeeAddict空字符串是在JavaScript falsy,所以是,则该表达式评估为真,如果``a``是""或任何其他falsy值(NULL,假,未定义,0,NAN). (10认同)
  • 不是`if(!a.trim())`有点危险吗?如果`a`未定义或为空怎么办? (5认同)
  • 根据我的经验,绝大多数时候你想要运行这个测试,你也希望它包括对空白的测试.由于这是通常的情况,OP应该在他的回答中包括来自@IlariKajaste的评论 (3认同)

Spo*_*ser 26

您提供的链接似乎正在尝试与您试图避免重复的测试不同的内容.

if (a == null || a=='')
Run Code Online (Sandbox Code Playgroud)

测试字符串是否为空字符串或null.您链接到的文章测试字符串是否完全由空格组成(或为空).

您描述的测试可以替换为:

if (!a)
Run Code Online (Sandbox Code Playgroud)

因为在javascript,空字符串和null中,两者都在布尔上下文中计算为false.


Tim*_*imo 25

根据David的回答,我个人喜欢先检查给定的对象,看它是否是一个字符串.否则调用.trim()不存在的对象会抛出异常:

function isEmpty(value) {
  return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null;
}
Run Code Online (Sandbox Code Playgroud)

用法:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false
Run Code Online (Sandbox Code Playgroud)


Imr*_*mad 6

检查所有“空”,如null、undefined、''、' '、{}、[]

var isEmpty = function(data) {
    if(typeof(data) === 'object'){
        if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
            return true;
        }else if(!data){
            return true;
        }
        return false;
    }else if(typeof(data) === 'string'){
        if(!data.trim()){
            return true;
        }
        return false;
    }else if(typeof(data) === 'undefined'){
        return true;
    }else{
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

用例和结果。

console.log(isEmpty()); // true
console.log(isEmpty(null)); // true
console.log(isEmpty('')); // true
console.log(isEmpty('  ')); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty({})); // true
console.log(isEmpty([])); // true
console.log(isEmpty(0)); // false
console.log(isEmpty('Hey')); // false
Run Code Online (Sandbox Code Playgroud)


Gre*_*reg 5

if(!my_string){ 
// stuff 
}
Run Code Online (Sandbox Code Playgroud)

if(my_string !== "")
Run Code Online (Sandbox Code Playgroud)

如果你想接受 null 但拒绝空

编辑:哎呀,忘了你的条件是它是否为空


Sjo*_*ers 5

使用 jQuery 检查数据是否为空字符串(并忽略任何空格):

function isBlank( data ) {
    return ( $.trim(data).length == 0 );
}
Run Code Online (Sandbox Code Playgroud)