正确判断空对象和空数组的方法

本文介绍了在JavaScript中如何正确判断一个对象是否为空以及数组是否为空的多种方法,包括使用JSON.stringify(), for循环, jQuery的isEmptyObject方法, Object.getOwnPropertyNames(), 以及Object.keys()。对于数组,可以通过length属性或先判断类型再判断长度的方式来确保安全地识别空数组。" 120136129,7718955,React组件逻辑复用:HOC、Render Props与Hooks,"['react.js', '前端开发', '组件化']

判断空对象

let obj={};

if(obj){
    //会进来这里。因为这样判断永远为真哦 即使obj为空对象这样判断是不行的。
}

1.JSON.stringify() :将对象转化为json字符串,再判断该字符串是否为"{}"

	var obj1 = {};
	var obj2 = {
	     name:'xxx',
	     age:20
	 };
	
	function test(obj) {
		var flag = JSON.stringify(obj);
		if(flag === '{}'){
			return true;
		}else {
			return false;
		}
	}
	
	 console.log('obj1',test(obj1));  // obj1 true
	 console.log('obj2',test(obj2));  // obj2 false

 

2.for  循环判断

var obj = {};
var b = function(obj) {
for(var key in obj) {
    return false;
}
    return true;
}
console.log(b(obj));//true

3.jquery的isEmptyObject方法

此方法是jquery将2方法(for in)进行封装,使用时需要依赖jquery

var data = {};
var b = $.isEmptyObject(data);
console.log(b);//true

4.Object.getOwnPropertyNames()方法

此方法是使用Object对象的getOwnPropertyNames方法,获取到对象中的属性名,存到一个数组中,返回数组对象,我们可以通过判断数组的length来判断此对象是否为空
注意:此方法不兼容ie8,其余浏览器没有测试

var data = {};
var arr = Object.getOwnPropertyNames(data);
alert(arr.length == 0);//true

5.使用ES6的Object.keys()方法

var data = {};
var arr = Object.keys(data);
alert(arr.length == 0);//true

判断空数组
1、利用数组的length属性来判断


if(arrayName.length > 0){
//数组不为空
}else{
//数组为空
}

2、利用先判断类型,再判断长度的方法来实现。这样增加了代码的安全性,因为不是Array类型的话是没有length属性的。

if(A && A.constructor==Array && A.length==0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值