前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

这篇具有很好参考价值的文章主要介绍了前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

1. property 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')

前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

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

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查一下,可以见这位同学的总结。

三、2023最新前端面经及行情分析

点击这里:前端面经文章来源地址https://www.toymoban.com/news/detail-400504.html

到了这里,关于前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js判断一个数组中是否有重复的数组/ 一个数组中对象的某个属性值是否重复

    项目中往往会遇到对数组处理是否存在某个形同的值。或者对象中是否存在形同元素… 下列方法常用,但不限于。 一、普通数组数据 1.1对数组进行排序,对比上一个元素和下一个元素是否相等,若相等,则说明数组有重复值。 1.2:先将数组转换成字符串,再遍历数组,在字

    2024年02月09日
    浏览(71)
  • 微信小程序如何判断对象是否为空、判断值是否存在

    在 js 文件中需要对 data 里一些的对象进行判断是否为空 比如这里我要在页面加载时判断 data 中的 record 是否为空: 在 onload() 方法中使用 Object.key().length0 来判断: Object.keys()方法:将给定对象的所有可枚举属性变成一个字符串数组 解释:将需要判断的对象转换为一个字符

    2024年02月11日
    浏览(105)
  • Go语言如何判断两个对象是否相等

    在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试 :编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等。 数据结构操作 :在使用 map 等数据结构时,可能需要判断两个对

    2024年02月07日
    浏览(145)
  • Java如何优雅地判断对象是否为空

    点击下载《Java如何优雅地判断对象是否为空》 在实际项目中,我们经常需要对各种变量或对象进行判空校验。这是因为,如果不进行判空校验,当遇到空值时,可能会导致程序出现NullPointerException异常。这是一种常见的运行时异常,它会在试图访问或操作空对象引用时发生。

    2024年04月28日
    浏览(97)
  • 在JS中如何判断两个对象是否相等

    在JavaScript中,判断两个对象是否相等有多种方法,取决于你对 相等 的定义以及对象属性的类型。以下是几种常见的方法:   1. 严格相等运算符 (===) 使用 === 运算符可以比较两个对象是否引用同一个对象。如果两个变量引用了同一个对象,则它们是相等的,否则它们是不相等

    2024年02月03日
    浏览(60)
  • ES6(ECMAScript 2015)有哪些新属性,如何判断当前浏览器是否支持?

    ES6(ECMAScript 2015)引入了许多新的语法和特性,以增强 JavaScript 编程语言的功能。以下是一些常见的 ES6 语法和特性以及它们的解释: let 和 const 声明 : let 和 const 用于声明变量,代替了旧的 var 。 let 声明的变量具有块级作用域,而 const 声明的变量是不可变的(常量

    2024年02月07日
    浏览(59)
  • js合并数组对象(将数组中具有相同属性对象合并到一起,组成一个新的数组)

    1.原数组: 2.合并后数组: 3.实现方法: 4.测试: 1.原数组: 2.合并后数组: 3.实现方法一: 测试: 4.实现方法二: 测试:

    2024年02月08日
    浏览(62)
  • web前端面试-- js深拷贝的一些bug,特殊对象属性(RegExp,Date,Error,Symbol,Function)处理,循环引用weekmap处理

    本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-) web面试题专栏:点击此处 在JavaScript中,深拷贝和浅拷贝是两种不同的对象复制方式。 浅拷贝是指将一个对象的引用复制给另一个对象,这意味着两个

    2024年02月07日
    浏览(45)
  • js中判断一个对象是否存在

    一、Boolean()方法 用Boolean()方法可以将Js中的任意数据类型转为布尔值: 二、用于判断xx是否存在 js一般会自动执行Boolean()方法,我们可以借此判断某个对象在js当前的执行环境中知否存在。如: 又如,可以判断当前环境下某个对象是否存在。 在为一个元素绑定了某个事件后,

    2024年02月13日
    浏览(60)
  • ES6---判断对象是否为{}

    使用 es6 语法判断一个对象是否为 {} 使用ES6的Object.keys()方法,返回值是对象中属性名组成的数组 https://gitee.com/u.uu.com/js-test/blob/master/20240109/a140546.html

    2024年01月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包