js判斷是否為空?
在平時的開發過程中,我們經常用到的是數組判空,但是針對對象的判空,我做了以下整理,希望可以幫到有需要的小伙伴。如果大家還有更好的方法,歡迎留言,一起學習奧。
1.最常見的思路,for...in... 遍歷屬性,為真則為“非空數組”;否則為“空數組” for (var i in obj) { // 如果不為空,則會執行到這一步,返回true return true; } return false; // 如果為空,返回false;
2.通過 JSON 自帶的 stringify() 方法來判斷: JSON.stringify() 方法用于將 JavaScript 值轉換為 JSON 字符串。 if (JSON.stringify(data) === '{}') { return false; // 如果為空,返回false } return true; // 如果不為空,則會執行到這一步,返回true 這里需要注意為什么不用 toString(),因為它返回的不是我們需要的。 var a = {}; a.toString(); // [object Object]"3.ES6 新增的方法 Object.keys();Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組。 如果我們的對象為空,他會返回一個空數組,如下: var a = {}; Object.keys(a); // [] 我們可以依靠Object.keys()這個方法通過判斷它的長度來知道它是否為空。 if (Object.keys(object).length === 0) { return false; // 如果為空,返回false } return true; // 如果不為空,則會執行到這一步,返回true; 我們可以封裝一個函數,類似這樣: function checkNullObj (obj) { if (Object.keys(obj).length === 0) { return false; // 如果為空,返回false } return true; // 如果不為空,則會執行到這一步,返回true }但這樣寫,還是太累贅了。可以寫成這樣:function checkNullObj (obj) { return Object.keys(obj).length === 0 }4.jquery的isEmptyObject方法 此方法是jquery將2方法(for in)進行封裝,使用時需要依賴jquery var data = {}; var b = $.isEmptyObject(data); alert(b);//true5.Object.getOwnPropertyNames()方法 此方法是使用Object對象的getOwnPropertyNames方法,獲取到對象中的屬性名,存到 一個數組中,返回數組對象,我們可以通過判斷數組的length來判斷此對象是否為空注意:此方法不兼容ie8,其余瀏覽器沒有測試 var data = {}; var arr = Object.getOwnPropertyNames(data); console.log( arr.length == 0 ); //true