欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-21 10:37:25
...

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

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的博客