js之判断数据是否为空

前言:

在讲正文之前,我想首先在这里提一下js的几种数据类型。在js中数据一共分为两大类,分别是基本数据类型引用类型——Object

基本数据类型:

  1. Underdined
  2. Null
  3. Boolean
  4. Number
  5. String

引用类型(Object):

  1. Function
  2. Array
  3. Object
  4. Date
  5. RegExp

引用类型大概是这几种,还有基本包装类型也是引用类型的一种,ECMAScript还提供了 3个特殊的引用类型:Boolean、Number和String。

对于基本类型而言,判断变量是否为空数据就很简单了, 

let a = '';
let b = 0;
let c = underfined;
let d = null;
let e = false;

由于空数据判断多用在对后台返回的接口数据的判断,所以在这里只讨论字符串、数字0,数组、对象、Null的情况

let a = ''或者 let a = 0 或者 let a = null;

1、if( a === '' || a === 0 || a === null) {
    console.log(a === '' || a === 0 || a === null);  // true
}

2、if( !a) {
    console.log(!a); // true
}


对于字符串还有一种方式判断,就是用length属性:
let a = '';
console.log(!a.length);  // true

当变量是空数组或者空对象时, 对变量取反的值是false,即

let arr = [];
let obj = {};
console.log(!arr,!obj); // false  false

原因是 if ( [ ] ) 是判断[ ] 是否是真值,但是假值只有6个,就是 false,undefined,null,0,"",NaN ,因此空数组和空对象都是真值,不能用取反的方式去判断数据是否为空,对于数组可以用lengtn属性去判断。 

let arr = [];

1、可以使用数组的length属性判断( 已知变量类型是数组 )
console.log(!arr.length); // true
console.log(arr.length === 0); // true

2、可以先将其转换成字符串,再与[]比较( 已知变量类型是数组 )
console.log(JSON.stringify(obj) === '[]');  // true

而对于空对象而言,判断方法总结了以下几种:

let obj = {};

1、可以先将其转换成字符串,再与{}比较 ( 已知变量类型是对象 )
console.log(JSON.stringify(obj) === '{}');  // true

2、可以遍历对象,没有属性的话就是空( 已知变量类型是对象 )
for(let key in obj) {
    console.log(false);
}
console.log(true);  // true

3、ES6的Object.keys()方法,会将对象中的属性转成一个数组,再判断数组是否为空即可( 已知变量类型是对象 )
var arr = Object.keys(obj);
console.log(arr.length === 0);  // true

4、与方法3类似,js中有个getOwnPropertyNames()的方法,也是将对象中的除原型属性以外的所有属性转成一个数组( 已知变量类型是对象 )
var arr = Object.getOwnPropertyNames(obj);
console.log(arr.length === 0);  // true

 

总结:

当然以上大多数方法都是基于已知数据类型的前提下的,当我们不知道数据类型时,还需要额外进行判断,在之后的学习中会总结,有需要的小伙伴可自取。

猜你喜欢

转载自blog.csdn.net/DZY_12/article/details/107512076