JavaScript中是否存在字符串.Empty,还是只是检查“”?
当前回答
您可以使用lodash:_.isEmpty(值)。
它涵盖了许多情况,如{}、“”、null、undefined等。
但对于JavaScript原始数据类型的Number类型(如_.isEmpty(10)或_.isEmpty(Number.MAX_VALUE)),它总是返回true。
其他回答
使用空合并运算符修剪空格:
if (!str?.trim()) {
// do something...
}
这里有很多有用的信息,但在我看来,其中一个最重要的因素没有得到解决。
null、undefined和“”都是假的。
当计算空字符串时,通常是因为需要用其他东西替换它。
在这种情况下,您可以预期以下行为。
var a = ""
var b = null
var c = undefined
console.log(a || "falsy string provided") // prints ->"falsy string provided"
console.log(b || "falsy string provided") // prints ->"falsy string provided"
console.log(c || "falsy string provided") // prints ->"falsy string provided"
考虑到这一点,可以返回字符串是否为“”、null或undefined(无效字符串)与有效字符串的方法或函数如下所示:
const validStr = (str) => str ? true : false
validStr(undefined) // returns false
validStr(null) // returns false
validStr("") // returns false
validStr("My String") // returns true
如果您需要确保字符串不只是一堆空格(我假设这是为了表单验证),则需要对空格进行替换。
if(str.replace(/\s/g,"") == ""){
}
检查是否为字符串类型,如果不为空:
const isNonEmptyString = (val) => typeof val === 'string' && !!val
有很多答案,还有很多不同的可能性!
毫无疑问,快速简单的实现是赢家:if(!str.length){…}
然而,还有许多其他例子。我建议,最好的功能方法是:
函数为空(str){if(str类型==‘undefined‘||!str | | str.length==0 | | str==“”||!/[^\s]/.test(str)||/^\s*$/.test(str)|| str.replace(/\s/g,“”)==“)返回true;其他的return false;}
我知道有点过分了。