前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?
创始人
2024-05-26 10:38:28
0

一、如何判断对象具有某属性?

如:let obj={name:'zhangsan',age:21}
有以下方法 ( property 为属性名的变量,实际上是key,键名):

1. property in obj

效果如图:
x in obj
in 运算符

2. Reflect.has(obj, property)

效果如图:
在这里插入图片描述
关于 Reflect:
① 它是JS的一个内置对象,无构造函数,可以用它遍历对象的key,如:Reflect.ownKeys(obj) // ['name', 'age'];
② 也可以用它给对象添加一个属性,如:Reflect.set(obj, 'hobby', ['singing','reading']), 返回值是true/false, 如图: 在这里插入图片描述
③ 无论是自有属性还是原型上有该属性,Reflect.has(obj,property)方法都会返回 true。

3. obj.hasOwnProperty(property)

可以判断是否是对象的自有属性,若有,返回true,否则返回 false(原型链上的返回false)。
所有继承了 Object 的对象都会继承到 hasOwnProperty 方法。用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

4. Object.hasOwn(obj, property)

是 Object 的方法,也是判断自有属性的。
不过要注意浏览器版本兼容问题,谷歌 93 以上版本才支持。不能贸然使用。

MDN推荐用该方法替换掉 hasOwnProperty。原话是这样的:“ 建议使用此方法替代 Object.hasOwnProperty(),因为它适用于使用 Object.create(null) 创建的对象以及覆盖了继承的 hasOwnProperty() 方法的对象。尽管可以通过在外部对象上调用 Object.prototype.hasOwnProperty() 解决这些问题,但是 Object.hasOwn() 更加直观。”

以下是运行结果图:
属性判断结果

5. Object.prototype.hasOwnProperty.call 方法

判断自有属性:

Object.prototype.hasOwnProperty.call(obj2,'studentId')

Object.prototype.hasOwnProperty

二、遍历数组的方法有哪些?

for,for...in,for...of,forEach,map

其中 forEach 会改变原数组,map 会返回一个新的数组,得到的结果赋值给一个新的变量接收,如:


const arr=[1, 2];
const result = arr.map((item, index)=>{return item + 1;
})
// result:[2,3] arr还是[1,2]

注意:

  1. for...in 拿到的是数组下标,for...of 拿到的是数组的值;
  2. for...in 能遍历对象,拿到的是对象的keyfor...of 不能遍历对象,会报错 obj is not iterable 不可迭代。

如果附带其他功能的遍历:

1、reduce
2、filter
3、some
4、indexOf
5、includes

这里博主只是单纯罗列一下。
这些方法什么用处?可以菜鸟教程或mdn查一下,可以见这位同学的总结。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...