zoukankan      html  css  js  c++  java
  • 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中判断对象是否为空,并且判断对象是否包含某个属性的方法

  • 相关阅读:
    第五周
    第三章 程序的机器级表示
    第二章 信息的表示和处理
    嵌入式Linux应用开发——Linux下的C编程基础
    Linux基础入门(20135207 王国伊)
    Java实验报告(实验四)
    linux系统之pam模块
    linux 从入门到跑路-时间,日期问题
    linux 从入门到跑路-Shell和部分命令
    linux 从入门到跑路-挂载,命令的执行顺序
  • 原文地址:https://www.cnblogs.com/mouseleo/p/13633451.html
Copyright © 2011-2022 走看看