js判断对象(object)、数组(Array)是否为空

今天又遇到了需要判断对象是否为空的需求,想着与其每次都去网上找,不如自己做个笔记。

js一个很方便的特点就是判断为True的写法是十分灵活的。比如,当我们判断一串文本是否为空时可以直接对这个变量进行判断。

let str = "我不是空的";
if(str)
	console.log(1);
else
	console.log(0);
// 1

类似的还可以用来判断数字是否不等于0,是否不等于null,是否不等于undefined。但是对于数组或者对象却不能直接这么判断。如果是数组的话要判断是否为空,推荐使用

let array = [];
if(array.length>0)
	console.log(1);
else
	console.log(0);
// 0 

至于object对象就比较麻烦了点。 根据自己的经验总结了几种方式,用于不同的用途。

1. 判断某个具体属性是否存在

if(object.id)
  Console.log(1)
  //存在ID这个属性时执行

这种方法的使用范围是最小的,使用起来时最简单的。但它需要明确知道这个对象是否会有某个属性才适用。

2. 序列化时判断是否 == “{}”

let object = {}, objectStr = "";
objectStr = JSON.stringify(object);
 if (objectStr != "{}")
	let stringify= JSON.stringify(changerData);

这种是利用的序列化会传回一串Json文本的特性来进行检查的。

3. 利用ES6的Object.keys()

这个得在支持ES6规则的时候才适用。

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。
MDN 关于 Object.keys()的解释

var data = {};
var arr = Object.keys(data);
if(arr.length > 0)
	console.log(1);
else
	console.log(0);
// 0 

参考文档 mhbsoft的博客

你可能感兴趣的:(js,对象是否为空,数组是否为空,js,对象是否为空,数组是否为空)