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