Javascript 如果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 ===

在我的示例中,有些数据可能等于任何类型(对象、字符串、数组等)

但是,有时数据返回字符串falsy值(如
“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的回答中,很明显函数在第一眼看到的时候做了什么,这里没有那么多