js中判断空数组和空对象的方法

复习的时候做一些学习的笔记总结。

javascript的值的类型:

  • 原始值:number、string、boolean、undefined、null、symbol(ES6)、bigint(ES10)
  • 引用值:引用对象(object、array、function)

在编写代码的过程中,我们经常会遇到对0、“”、undefined、null的判定,我们可以使用逻辑非和逻辑比较(与自己)运算共同确定是哪一个类型的空值,如:

	  const a = 0;
      const b = "";
      const c = undefined;
      const d = null;

      console.log(!a && a === 0);//true
      console.log(!b && b === "");//true
      console.log(!c && c === undefined);//true
      console.log(!d && d === null);//true
      
      这四个值取逻辑非的结果均为true,且均与自身相等

但[]空数组和{}空对象不一样,拿空数组举例:

	  const emptyArr = [];
      console.log(!emptyArr);//false
      console.log(emptyArr === []);//false

因为数组和对象是引用类值,变量的值为真实对象的索引,任意两个空数组和空对象都不相等。
所以判断空数组和空对象是有点复杂的,需要一些办法来判断:

1. JSON.stringify()

 	  const emptyArr = [];
      const emptyObj = {};
      console.log(JSON.stringify(emptyArr) === "[]"); //true
      console.log(JSON.stringify(emptyObj) === "{}"); //true

通过判断空数组和空对象的json.stringify返回值与"[]“、”{}"是否相等判断。
注:toString()和String方法对空数组和空对象的转换结果和JSON.stringify不一样:

	  console.log(emptyArr.toString());
      console.log(emptyObj.toString());

控制台显示:(toString和String方法的结果一致)
在这里插入图片描述

2. 判断数组的长度/对象key的长度

  • 空数组 :
    使用isPrototypeOf()方法和数组的length()方法判断一个值 :1.是数组;2.为空。
    isPrototype()的用法:objA.isPrototypeOf(objB) ,
    即判断对象A(objA)是否为对象B(objB)的原型链上的原型对象,如:若要判断一个变量a是否为数组,可以使用
    Array.prototype.isPrototypeOf(a)来判断,值为true\false(也可以用Array.isArray()判断是否为数组)
    接下来可以进行空数组验证:
	  const emptyArr = [];
        console.log(Array.isArray(emptyArr) && emptyArr.length === 0); //验证为数组且为空
  • 空对象:
    同样需要判断:1.是对象;2.为空
    对象没有length属性,但是可以通过keys()方法获得对象内key的数组,所以:
	  const emptyObj = {};
	  console.log(Object.prototype.isPrototypeOf(emptyObj) && emptyObj.keys(obj).length === 0);//验证为对象且为空

最后,上面两种办法只能验证是否为[]{},无法验证嵌套的空数组、空对象,如[{},[]],若要验证是否空里有空,需要根据实际情况自己写一个遍历函数

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值