js/es6判斷對象是否為空,並判斷對象是否包含某個屬性


js/es6判斷對象是否為空,並判斷對象是否包含某個屬性

js判斷對象為空以及有好幾種方法了,但是個人覺得不是特別方便。

比如:

1、把對象通過 JSON.stringify 轉為字符串,再判斷字符串是否等於 " {} "

2、for in循環,判斷key是否存在

3、jq的方法

es6已經幫我們很好的解決了此類問題。

es6針對對象增加了3個新方法(數組也有):

(1)、Object.keys:返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷屬性的鍵名

(2)、Object.values:返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷屬性的鍵值

(3)、Object.entries:返回一個數組,成員是參數對象自身的(不含繼承的)所有可遍歷屬性的鍵值對

由此,我們可以通過其中任意一個方法,得到返回的數組,判斷數組長度是否大於0,來判斷對象是否為空。

舉個栗子:

  1.  
    const obj = {
  2.  
    foo: 'bar',
  3.  
    baz: 42
  4.  
    }
  5.  
    console.log(Object.keys(obj));
  6.  
    // ["foo", "baz"]
  7.  
     
  8.  
    console.log(Object.values(obj));
  9.  
    // ["bar", 42]
  10.  
     
  11.  
    console.log(Object.entries(obj));
  12.  
    // [["foo", "bar"], ["baz", 42]]
  13.  
     
  14.  
    // 打印返回值的長度
  15.  
    console.log(Object.keys(obj).length); // 2
  16.  
     
  17.  
    const obj2 = {};
  18.  
    console.log(Object.keys(obj2)); // []
  19.  
    // 打印空對象的長度
  20.  
    console.log(Object.keys(obj2).length); // 0

這樣我們就可以很簡單直觀的判斷出對象是否為空,並且可以通過這三個方法,拿到想要的數據(鍵名、鍵值、鍵值對)

那么既然得到了返回值數組,我們也可以很簡單的判斷對象中是否包含某個我們已知的屬性名

  1.  
    console.log(keys.indexOf('baz')); // 1
  2.  
     
  3.  
    console.log(keys.indexOf('ad')); // -1

indexOf可以判斷數組是否包含某個值,返回該值所對應的下標,對於不存在的值,返回 -1

這樣我們就能判斷對象是否包含某個屬性名了

當然了,es6還提供了其他幾種判斷對象是否包含屬性名的方法,如下:

1、in:屬性名 in 對象(判斷屬性名是否在對象中存在,返回一個布爾值)

console.log('baz' in obj); // true

2、hasOwnProperty:對象.hasOwnProperty(屬性名)(判斷對象中是否含有某個屬性名,返回一個布爾值)

console.log(obj.hasOwnProperty('baz')); // true

好了,以上就是es6中判斷對象是否為空,並且判斷對象是否包含某個屬性的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM