js之判斷資料是否為空

2021-10-08 09:43:52 字數 2132 閱讀 7027

在講正文之前,我想首先在這裡提一下js的幾種資料型別。在js中資料一共分為兩大類,分別是基本資料型別引用型別——object

基本資料型別:

underdined

null

boolean

number

string

引用型別(object):

function

array

object

date

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)

2、if( !a)

對於字串還有一種方式判斷,就是用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(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

當然以上大多數方法都是基於已知資料型別的前提下的,當我們不知道資料型別時,還需要額外進行判斷,在之後的學習中會總結,有需要的小夥伴可自取。

JS判斷值是否為空

1 typeof用法 typeof的運算數未定義,返回的就是 undefined 運算數為數字 typeof x number 字串typeof x string 布林值typeof x boolean 物件,陣列 和null typeof x object 函式typeof x function ...

js是否為空判斷大全

一 對於object物件判斷是否為空 例如 var object 1 jquery.isemptyobject object 為空返回true 用於物件未指定型別,或指定型別為陣列,物件三者時可用,其他型別不可用 1 if object undefined 為空返回true 未指明型別 2 if t...

js 判斷是否為空物件 空陣列

js 判斷是否為空物件 空陣列 當需要判斷引數是否為空時,總希望 js 能夠提供原生的判斷方法,可惜並沒有,只能自己封裝了。isempty function obj 檢驗陣列 if array.prototype.isprototypeof obj obj.length 0 檢驗物件 if obje...