Javascript 如果falsy值是字符串,是否还有其他最佳方法来检查它?
在我的示例中,有些数据可能等于任何类型(对象、字符串、数组等) 但是,有时数据返回字符串falsy值(如Javascript 如果falsy值是字符串,是否还有其他最佳方法来检查它?,javascript,jquery,Javascript,Jquery,在我的示例中,有些数据可能等于任何类型(对象、字符串、数组等) 但是,有时数据返回字符串falsy值(如“false”,“undefined”,“0”,“null”)。它应该从条件返回false var Helper = { isEmpty: function(data){ return !data || data === "false" || data === "null" || data === "undefined" || data === "0" || data ===
“false”
,“undefined”
,“0”
,“null”
)。它应该从条件返回false
var Helper = {
isEmpty: function(data){
return !data || data === "false" || data === "null" || data === "undefined" || data === "0" || data === "NaN";
}
}
console.log(Helper.isEmpty("false"));//true
console.log(Helper.isEmpty("null"));//true
//...
还有其他最佳方式吗?有什么想法吗?您可以使用
Array.indexOf()
在数组中搜索指定的值,如果该值不在数组中,则返回值将为-1
var-Helper={
isEmpty:函数(数据){
返回数据?[“false”、“null”、“undefined”、“0”、“NaN”]。indexOf(data)!=-1:true;
}
}
功能测试(a){
对于(vari=0;i 测试([false、'false'、'null'、'undefined'、'0'、'NaN'、'Hello World!'])代码>编辑:我找到了一些解决方案:
1)这是一种更短更智能的方法:/false | NaN | undefined | 0 | null/.test(data)代码>
var-Helper={
isEmpty:函数(数据){
return/false | NaN | undefined | 0 | null/.test(数据);
}
};
console.log(Helper.isEmpty(“false”)//真的
log(Helper.isEmpty(false))//真的
log(Helper.isEmpty(“null”)//真的
console.log(Helper.isEmpty(“test”)//假的
//…
使用==
而不是==
@Jackson。你是说data==false
。好主意!!字符串(数据)。替换(/((null)|(false)|(0)|(未定义))/g,“”
!!字符串(数据).replace(/null | false | undefined | 0 | NaN/,“”)代码>将更加准确和简短。没有必要使用所有那些不使用结果的捕获组@Dandavist感谢您的回答,特别是对于test([])
,虽然这确实有效,但任何必须阅读和维护您的代码的同事都不会喜欢您,因为您的逻辑有任何问题。请给我解释一下,为什么?这不是很容易理解的。在TinyGiant的回答中,很明显函数在第一眼看到的时候做了什么,这里没有那么多