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

IT技术 javascript jquery
2021-03-08 16:24:44

使用开箱即用的jquery(即没有插件)测试空字符串的最佳方法是什么?我试过这个

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

我不想重复

if (a == null || a=='')

到处都有,如果有的 if (isempty(a)) 话。

6个回答
if (!a) {
  // is emtpy
}

要忽略字符串的空格:

if (!a.trim()) {
    // is empty or whitespace
}

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

当您输入 0 时,接受的答案将失败,但它适用于 1、2、3、4 等。
2021-04-21 16:24:44
如果您还需要匹配仅包含空格的字符串,最好使用 if (!$.trim(a))
2021-04-23 16:24:44
根据我的经验,绝大多数情况下您想要运行此测试,您还希望它包括对空白的测试。由于这是通常的情况,OP 应该在他的回答中包含来自@IlariKajaste 的评论
2021-04-25 16:24:44
@CoffeeAddict 空字符串在 javascript 中是假的,所以是的,如果a是“”或任何其他假值(空、假、未定义、0、NaN),则表达式计算为真
2021-04-26 16:24:44
是不是if (!a.trim())有点危险?如果a未定义或为空怎么办?
2021-05-11 16:24:44

您提供的链接似乎正在尝试与您试图避免重复的测试不同的东西。

if (a == null || a=='')

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

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

if (!a)

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

if(!a)对于由 4 个空格组成的字符串,它不会失败吗?` `
2021-04-28 16:24:44
@JohnHenckel:它会0像一个空字符串一样对待,但不会像"0". 我想这就是你的意思?可以想象,这是在您知道它a是字符串或空值的情况下使用的,但是是的。有什么需要注意的。
2021-05-06 16:24:44
这个答案是错误的。它将 '0' 视为空字符串,但事实并非如此。
2021-05-18 16:24:44
@KNU 是的,但问题是关于空字符串,由空格组成的字符串不是空字符串。看看我写了什么关于询问的内容和链接代码的作用之间的区别
2021-05-20 16:24:44

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

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

用法:

isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(''); // true
isEmpty('foo'); // false
isEmpty(1); // false
isEmpty(0); // false
我检查了 textarea 中的 <br /><p></p> ,它说它应该不是空的
2021-04-25 16:24:44

检查所有“空”,如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;
    }
}

用例和结果。

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

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

function isBlank( data ) {
    return ( $.trim(data).length == 0 );
}