文章目录[隐藏]
判断一个数组是否为空
注意:判断数组 array 是否为空数组,即 [],需要用 array.length === 0 判断,不能直接比较 [] 。因为[] !== [] 为 true
字符串、数字、布尔、数组、对象、Null、Undefined === 全等比较比较 2 个相同类型的对象,如果类型不同,就直接返回 false,如果类型相同,那就比较具体的值或具体的引用地址。
var arr=null; if(arr===null){ console.log('arr is null'); } arr=undefined; if(arr===null){ console.log('arr is null'); }else if(arr===undefined){ console.log('arr is undefined'); } //arr 赋值一个数组对象 arr=[]; //if(arr.length==0){ if(arr.length===0){ console.log('arr is empty'); }
所以在判断数组是否为空时,可以使用以下代码对象在做逻辑判断的时候,如果值为 null, undefined,转化 boolean 值 false。
try{ if(!arr||(Object.prototype.toString.call(arr)==='[object Array]'&&arr.length===0)) { console.log('arr is null or empty'); } }cathc(error){ //处理arr未被声明的情况 }
具体可以参看 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness
判断一个对象是否为空
js 中一般判断一个对象是否为空,可以写一个方法用 for..in 遍历,然后返回是否为空,
function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } ;
不过在 ES5 中对象有一个很奇妙的一个遍历对象的方法,Object.keys(object)
;
这个方法接受一个对象作为参数,对这个对象的键进行遍历,并返回一个数组集合。
到这里就显而易见了。判断数组为空有很多方法,取第一个元素、数组长短等都可以判断。
所以判断一个对象为空可以写为:
console.log(Object.keys({}).length); //结果是0, 0的布尔值是false。
注:不要使用Object.keys({})[0]
,因为对象的键可以为数字,类似 jq 对象就是数组为 0 的对象,
例子:Object.keys({ 0: '测试' })[0] //结果是 0
,其实我们期望的正确结果是 true,但是这个确实 false。