如果它是String,还有其他最佳方法来检查假值吗?

时间:2015-10-04 20:47:32

标签: javascript jquery

在我的示例中,有些数据可能等于任何类型( Object,String,Array,... )。

但是,有时数据会返回字符串假值(例如"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
//...

还有另一种最佳方式吗?有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Array.indexOf()在数组中搜索指定的值,如果该值不在数组中,则返回的值将为-1。

var Helper = {
  isEmpty: function(data){
    return data ? ["false","null","undefined","0","NaN"].indexOf(data) !== -1 : true;
  }
}

function test(a) {
  for(var i = 0; i < a.length; ++i) console.log(a[i] + ' isEmpty: ' + Helper.isEmpty(a[i]));
}

test([false,'false','null','undefined','0','NaN','Hello World!']);

答案 1 :(得分:0)

已编辑:我找到了一些解决方案:

1)它更短更智能:/false|NaN|undefined|0|null/.test(data);

   var Helper = {
        isEmpty: function (data) {
            return /false|NaN|undefined|0|null/.test(data);
        }
    };
    console.log(Helper.isEmpty("false"));//true
    console.log(Helper.isEmpty(false));//true
    console.log(Helper.isEmpty("null"));//true
    console.log(Helper.isEmpty("test"));//false
    //...

2)或者,通过对象检查:

var Helper = {
  isEmpty: function(data){
      return !!{false:1, null:1, undefined:1, NaN:1, 0:1}[data] || !data;
  }
}
console.log(Helper.isEmpty("false"));//true
console.log(Helper.isEmpty("null"));//true
//...