js/es6判断对象是否为空,并判断对象是否包含某个属性

js/es6判断对象是否为空,并判断对象是否包含某个属性js判断对象为空以及有好几种方法了,但是个人觉得不是特别方便。比如:1、把对象通过JSON.stringify转为字符串,再判断字符串是否等于”{}”2、forin循环,判断key是否存在3、jq的方法es6已经帮我们很好的解决了此类问题。es6针对对象增加了3个新方法(数组也有):(1)、Object.keys:返回一个数组,成员是参数对象自身的(不含继承…

大家好,又见面了,我是你们的朋友全栈君。

js判断对象为空已经有好几种方法了,但是个人觉得不是特别方便。

比如:

1、把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 ” {} “

2、for in循环,判断key是否存在

3、jq的方法

es6已经帮我们很好的解决了此类问题。

es6针对对象增加了3个新方法(数组也有):

(1)、Object.keys:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键名

(2)、Object.values:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值

(3)、Object.entries:返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对

由此,我们可以通过其中任意一个方法,得到返回的数组,判断数组长度是否大于0,来判断对象是否为空。

举个栗子:

const obj = {
    foo: 'bar',
    baz: 42
}
console.log(Object.keys(obj)); 
// ["foo", "baz"]

console.log(Object.values(obj)); 
// ["bar", 42]

console.log(Object.entries(obj)); 
// [["foo", "bar"], ["baz", 42]]

// 打印返回值的长度
console.log(Object.keys(obj).length); // 2

const obj2 = {};
console.log(Object.keys(obj2)); // [] 
// 打印空对象的长度
console.log(Object.keys(obj2).length); // 0

这样我们就可以很简单直观的判断出对象是否为空,并且可以通过这三个方法,拿到想要的数据(键名、键值、键值对)

那么既然得到了返回值数组,我们也可以很简单的判断对象中是否包含某个我们已知的属性名

console.log(Object.keys(obj).indexOf('baz')); // 1

console.log(Object.keys(obj).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中判断对象是否为空,并且判断对象是否包含某个属性的方法

如有问题,请指出,接收批评。

个人微信公众号:

js/es6判断对象是否为空,并判断对象是否包含某个属性

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137471.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSession

    SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSessionmybatisJavaAPISqlSessionFactoryBuilderSqlSessionFactorySqlSession执行语句方法批量立即更新方法事务控制方法本地缓存使用MyBatis的主要Java接口就是SqlSession。你可以通过这个接口来执行命令,获取映射器和管理事务。我们会概括讨论一下SqlSession本身,但是首先我们还是要了解如何获取一个SqlS…

    2022年5月4日
    50
  • 阅读软件怎么添加书源_认识一波苹果安卓手机上,那些以一敌百的小说漫画软件…[通俗易懂]

    阅读软件怎么添加书源_认识一波苹果安卓手机上,那些以一敌百的小说漫画软件…[通俗易懂]哈喽大家好,我是无知便是罪,专注于收集和分享互联网上有价值的好东西。今天让我们继续分享一些可以自定义源的软件吧。看过我视频的老用户一听到这个词肯定两眼放光了。像我们之前推荐的看小说的阅读,看漫画的异次元和看影视作品的海阔,他们有一个共同的特点,就是允许用户自定义上传一些书源啦漫画源和影视源。这样你在搜索作品的时候呢,软件就会在这些源头里面进行抓取。如果遇到收费的内容呢,你还可以免费换源,…

    2022年6月20日
    40
  • spring循环依赖到底怎么解决的_恋爱循环难吗

    spring循环依赖到底怎么解决的_恋爱循环难吗4.AOP中的循环依赖在看自动代理源码的过程中,突然注意到SmartInstantiationAwareBeanPostProcessor接口中的getEarlyBeanReference方法,它是Spring处理循环依赖时返回**未创建完(只实例化未做依赖注入)**Bean的扩展。关于循环依赖可以去Bean的循环依赖一章去详细了解,这里只做简单的说明。有两个单例Bean,A和B,A中引用了B…

    2022年8月11日
    9
  • TLSF算法分析[通俗易懂]

    TLSF算法分析[通俗易懂]注:本文的大部分内容摘录自论文《TLSF:aNewDynamicMemoryAllocatorforReal-TimeSystems》,可以通过“科学上网”访问如下链接阅读原文:http://www.gii.upv.es/tlsf/files/ecrts04_tlsf.pdf。什么是TLSFTLSF是TwoLevelSegregatedFitmemoryal

    2022年6月30日
    22
  • skinsdog 狗网CSGO饰品皮肤开箱网站可直接取回[通俗易懂]

    skinsdog 狗网CSGO饰品皮肤开箱网站可直接取回[通俗易懂]skinsdog狗网CSGO饰品皮肤开箱网站可直接取回官方链接:skinsdog.cc注册登录自动免费获得$0.8美金推广码:csgogo(注册使用送0.8美金)支付:微信支付宝状态:直接取回

    2022年9月1日
    3
  • Rewritecond介绍

    Rewritecond介绍RewriteCondSyntax:RewriteCondTestStringCondPattern[flags]  RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。  TestString是一个字符串,除了包含普通的

    2022年6月13日
    23

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号