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);//trueconsole.log(!b && b === "");//trueconsole.log(!c && c === undefined);//trueconsole.log(!d && d === null);//true这四个值取逻辑非的结果均为true,且均与自身相等
但[]空数组和{}空对象不一样,拿空数组举例:
const emptyArr = [];console.log(!emptyArr);//falseconsole.log(emptyArr === []);//false
因为数组和对象是引用类值,变量的值为真实对象的索引,任意两个空数组和空对象都不相等。
所以判断空数组和空对象是有点复杂的,需要一些办法来判断:
1. JSON.stringify()
const emptyArr = [];const emptyObj = {};console.log(JSON.stringify(emptyArr) === "[]"); //trueconsole.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);//验证为对象且为空
最后,上面两种办法只能验证是否为[]{},无法验证嵌套的空数组、空对象,如[{},[]],若要验证是否空里有空,需要根据实际情况自己写一个遍历函数
js中判断空数组和空对象的方法相关推荐
- 关于js中的判断数组为空的问题
如果你在查询一个文档,它啥都没存,但是doc就是返回了一个[]: User.find({email: userEmail}, {avatar: 1}, function (err, doc) {let ...
- shell中判断空字符串和有趣的空字符串
Introduction Shell 中判断空字符串 以及有趣的空字符串 判断字符串是否为空 Example1 if [[ -z "$str" ]] thenecho " ...
- js中常用的数组和字符串方法
一:js中常用的数组方法 <script>//函数声明式中的方法const arr=[1,3,6,9,15,19,16];//函数的所有方法 map(),reduce(),filter() ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
偶然看到<C#中判断空字符串的3种方法性能分析 >作者:清清月儿 主页:http://blog.csdn.net/21aspnet/ 时间:2007.4.28 写的一 ...
- 总结JS中常用的数组的方法大全
总结JS中常用的数组方法 JS中常用的数组方法总结 数组(Array)是一种复杂的数据类型,它属于Object(对象)类型,用来将一组数组合在一起,通过一个变量就可以访问一组数据.在使用数组时,经常会 ...
- C#中判断空字符串的3种方法性能分析【月儿原创】
C#中判断空字符串的3种方法性能分析 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/ 时间:2007.4.28 3种方法分别是:string ...
- oracle中判断空,Oracle中判断空游标的方法
1.声明包 create or replace package TAL_TEST is -- Author : ADMINISTRATOR -- Created : 2012/12/9 15:15:3 ...
- C#中判断空字符串的3种方法性能分析 1
C#中判断空字符串的3种方法性能分析 作者:杨义贤 主页:http://blog.csdn.net/lucky_yyx 时间:2007.4.29 3种方法分别是:string a=&qu ...
最新文章
- Super SloMo神经网络生成极慢视频(PyTorch实现)
- C#磁盘遍历——递归
- Linux 命令之 tail -- 在屏幕上显示指定文件的末尾若干行/显示文件尾部内容/查看文件尾部内容
- matlab中degrees,Convert degrees-minutes-seconds to degrees
- python哪些类型可以作为迭代器_python0.8-----set类型与迭代器
- tableau三轴该怎么做_如何用tableau绘制城市地铁线路图?
- c语言中实现自动平移,c语言实现图像的旋转与平移
- requests库入门09-OAUTH认证
- PHP是4个进程还是五个,PHP多进程(4) :内部多进程
- @AuotoWired+@Qualifier(百度百科)
- Javascript原生之用cssText批量修改样式
- 目前总结最新最系统的Java程序员未来职业规划路线,请收藏
- Proteus仿真:存储器
- B2B,B2C,C2C,C2B,B2G
- c# SharpPcap 截包,抓包 - 资料收集贴 --转
- html5图片自动滑动,超简单的图片左右切换滑动
- 计算机上语音是什么符号,语音
- java项目获取系统信息
- linux系统下操作nandflash指令,Linux驱动之Nand Flash原理及硬件操作
- warcraft 3 经典语句之月之女祭司(Priestess of the moon)
热门文章
- Eigen零零散散的一些总结
- mysql概念模型中的3种基本联系_在概念模型中,通常用实体联系图表示数据的结构,其 3 个要的元素是( )、( )和( )。_学小易找答案...
- python :jieba库的使用大全
- 极光 · 底层逻辑 · doubleの浮点误差
- C# 取QQ会话记录
- excel服务器okr系统,OKR工具能帮企业落地OKR吗?从飞书OKR看专业工具的价值
- 图解Java多线程设计模式——Java多线程基础
- 大计基编程题(第十三周)
- 计算机音乐告白之夜,温柔版:《告白之夜(纯音乐)》
- form表单如何不直接提交?