在我的示例中,有些数据可能等于任何类型( 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
//...
还有另一种最佳方式吗?有什么想法吗?
答案 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
//...