JS判断对象、数组是否包含某个属性、某个值

这篇具有很好参考价值的文章主要介绍了JS判断对象、数组是否包含某个属性、某个值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、判断对象是否包含某个属性

可以使用以下几种方法来判断对象是否包含某个属性:

1. in 操作符:

使用 in 操作符可以检查对象是否包含指定的属性。它会检查对象及其原型链上的所有属性。

const obj = { name: 'John', age: 25 };
console.log('name' in obj); // 输出: true
console.log('gender' in obj); // 输出: false

2. hasOwnProperty() 方法:

hasOwnProperty() 是对象的内置方法,用于检查对象自身是否具有指定的属性(不包括原型链上的属性)。

const obj = { name: 'John', age: 25 };
console.log(obj.hasOwnProperty('name')); // 输出: true
console.log(obj.hasOwnProperty('gender')); // 输出: false

3. 使用 undefined 进行判断:

通过访问对象的属性并与 undefined 进行比较,可以判断对象是否包含该属性。

但当 obj 为null 或 undefined 时会报错。

const obj = { name: 'John', age: 25 };
console.log(obj.name !== undefined); // 输出: true
console.log(obj.gender !== undefined); // 输出: false

4. 使用 Object.keys() 方法:

Object.keys() 方法返回一个包含对象自身可枚举属性的数组。您可以使用该方法来获取对象的所有属性,并判断指定属性是否存在于返回的数组中。

const obj = { name: 'John', age: 25 };
console.log(Object.keys(obj).includes('name')); // 输出: true
console.log(Object.keys(obj).includes('gender')); // 输出: false

备注:这些方法可以根据您的需求选择使用,以判断对象是否包含某个属性。请注意,前三种方法在属性值为 undefined 时也会返回 true,而最后一种方法不会将 undefined 视为存在的属性。

5. 使用 Reflect.has(obj , keyName) 方法:

Reflect.has(obj, name)
Reflect.has方法对应name in obj里面的in运算符。
如果Reflect.has()方法的第一个参数不是对象,会报错。

 let obj = {
     name: '再努力些吧',
     age: 18,
     work: '前端',
 }
 // 旧写法
 console.log('age' in obj);//true
 console.log('sex' in obj);//false
 // 新写法
 console.log(Reflect.has(obj, 'age'));//true
 console.log(Reflect.has(obj, 'sex'));//false

6、propertyIsEnumerable() 相当于 hasOwnProperty() 的增强版

这个方法的用法与hasOwnProperty()相同,但当检测属性是自有属性(非继承)且这个属性是可枚举的,才会返回true。

方便记忆可以理解为:

  1. in: 只要对象包含某个属性就返回true, 包含原型链上的属性
  2. hasOwnProperty: 首先满足in, 其次属性不属于原型链
  3. propertyIsEnumerable: 首先满足hasOwnProperty,其次该属性未经由Object.defineProperty定义为不可列举
/* 如下例子我就不写了引用别人的。作者:Netmad,来源:知乎,
链接:https://www.zhihu.com/question/21907133/answer/378501127  */
function foo() {
  this.id = 'id';
}
foo.prototype.common = 'common';
var o = new foo();

'id' in o; // true
'common' in o; // true
'whatever' in o; // false
o.hasOwnProperty('id'); //true
o.hasOwnProperty('common'); //false
o.propertyIsEnumerable('id'); //true
o.propertyIsEnumerable('common'); //false
// 目前为止, hasOwnPerproty和propertyIsEnumerable看上去没啥差别
// 通过Object.defineProperty定义新的属性
Object.defineProperty(o, 'prop', {
  value: 'valueOfProp',
  enumerable: false
});
o.prop; // valueOfProp
o.hasOwnProperty('prop'); // true
o.propertyIsEnumerable('prop'); //false
// 如果defineProperty时enumerable为true, 那么这里依然和hasOwnProperty一样

以上方法都可以判断出对象是否包含某个属性,工作中可以根据不同情况采用不同的方法。

二、判断数组中是否包含某个值

可以使用以下几种方法来判断数组中是否包含某个值:

1. includes() 方法:

includes() 方法用于检查数组是否包含指定的值,并返回一个布尔值。

const arr = [1, 2, 3, 4, 5];
console.log(arr.includes(3)); // 输出: true
console.log(arr.includes(6)); // 输出: false

2. indexOf() 方法:

indexOf() 方法返回指定值在数组中的第一个匹配项的索引,如果不存在则返回 -1。

const arr = [1, 2, 3, 4, 5];
console.log(arr.indexOf(3) !== -1); // 输出: true
console.log(arr.indexOf(6) !== -1); // 输出: false

3. find() 方法:

find() 方法返回数组中满足提供的测试函数的第一个元素的值,如果不存在则返回 undefined

const arr = [1, 2, 3, 4, 5];
console.log(arr.find(element => element === 3) !== undefined); // 输出: true
console.log(arr.find(element => element === 6) !== undefined); // 输出: false

4. some() 方法:

some() 方法测试数组中是否至少有一个元素通过了提供的测试函数,返回一个布尔值。

const arr = [1, 2, 3, 4, 5];
console.log(arr.some(element => element === 3)); // 输出: true
console.log(arr.some(element => element === 6)); // 输出: false

备注:这些方法可以根据您的需求选择使用,以判断数组中是否包含某个值。请注意,前三种方法在比较值时使用的是严格相等运算符(===),而 some() 方法则通过测试函数来进行判断。

5. findIndex() 方法:

返回值:如果找到满足条件的元素,则返回该元素的索引(大于等于 0);如果没有找到满足条件的元素,则返回 -1。
判断方式:通过提供的测试函数对数组中的每个元素进行判断,直到找到满足条件的元素为止。
示例:

const arr = [1, 2, 3, 4, 5];
console.log(arr.findIndex(element => element === 3)); // 输出: 2
console.log(arr.findIndex(element => element === 6)); // 输出: -1

以上5种都是ES6增加的。文章来源地址https://www.toymoban.com/news/detail-702705.html

到了这里,关于JS判断对象、数组是否包含某个属性、某个值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • JavaScript判断数组对象是否含有某个值的方法(6种)

    文章内容 文章链接 vue3 antd table表格的增删改查(一) input输入框根据搜索【后台管理系统纯前端filter过滤】 https://blog.csdn.net/XSL_HR/article/details/128072584?spm=1001.2014.3001.5501 vue3 antd table表格的增删改查(二) input输入框根据搜索【后台管理系统 请求后端接口 前后端

    2024年02月06日
    浏览(63)
  • js判断对象是否拥有某个key

    方法一 : \\\"key\\\" in obj ,结果为 false,表示不包含;否则表示包含 方法二 : obj.hasOwnProperty(\\\"key\\\") ,obj 表示对象,结果为 false 表示不包含;否则表示包含 这两种方法都可以用于检查对象是否包含指定的属性,但它们有一些区别。 “key” in obj: 这种方法使用 in 运算符来检查属

    2024年02月08日
    浏览(65)
  • js判断对象数组中的元素是否存在重复

     1、使用  Array.some()  方法和自定义比较函数: 使用  Array.some()  方法遍历数组,对每个元素执行自定义的比较函数。比较函数使用  Array.findIndex()  方法来查找与当前元素相等且索引不同的元素,如果找到则表示存在重复元素。 2、使用  Set  数据结构: 使用  Set  数据结

    2024年02月13日
    浏览(65)
  • js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法

    js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法 示例 1、基础版 2、进阶版 1、删除一个对象上的属性 1.1、delete 语法 delete 对象.属性名 1.2、es6之解构赋值 1.3、es6之反射 语法 Reflect.deleteProperty(对象,属性名) 2、判断对象中是否有某一属性的四种方法 2.1、

    2024年02月13日
    浏览(50)
  • mysql数据库存数组类型数据,如何判断数组中是否包含某个值?使用mybatisplus查询。

    跟mybatisplus中.in()方法相反的函数 mybatisplus的in函数:查询的是数据库的某个属性的值是否在给定的集合中。这里我们讲的是一个值是否在数据库的某个属性数组中。 说明: 这是一张学生信息表,其中包含了学生曾经就读过的学校。现在我们要做的就是查询哪些学生就读过指

    2024年02月16日
    浏览(99)
  • JavaScript对象数组根据某个属性值筛选分类

    🤵 作者 : coderYYY 🧑 个人简介 :前端程序媛,目前主攻 web前端 ,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐 :《前端项目教程以及代码》 在开发中,这种需求还是挺常见的,常用于处理后端返回的数据

    2024年02月06日
    浏览(49)
  • JS两种方法判断字符串是否包含中文

    第一种是正则表达式来判断,判断输入的字符中是否包含中文。 第二种是通过charCodeAt()来判断,字符串.charCodeAt(index)255 就是中文,否则是英文。

    2024年02月13日
    浏览(69)
  • 使用js判断list中是否含有某个字符串,存在则删除,

    显示上图中使用了两种方式, 左边的是filter将不等于userCode的元素筛选出来组成一个新的list, 但是上面这个方法在 IE浏览器中不支持 , 所以改成了右边的方法,使用splice: splice传入两个参数,第一个参数是要删除的元素的索引位置,第二个是从这个索引往后删除几个;

    2024年01月24日
    浏览(70)
  • 前端基础面试题:如何判断对象是否具有某属性?遍历数组的方法有哪些?

    一、如何判断对象具有某属性? 如: let obj={name:\\\'zhangsan\\\',age:21} 有以下方法 ( property 为属性名的变量,实际上是key,键名): 1. property in obj 效果如图: in 运算符 2. Reflect.has(obj, property) 效果如图: 关于 Reflect: ① 它是JS的一个内置对象,无构造函数,可以用它遍历对象的key,如

    2023年04月08日
    浏览(61)
  • Js如何判断两个数组是否相等?

    日常开发,时不时会遇到需要判定2个数组是否相等的情况,需要实现考虑的场景有: 先判断长度,长度不等必然不等 元素位置 其他情况考虑 \\\'1\\\' 和 1 (Object的key是字符串, Map的key没有限制) NaN null 和 undefined 数组自带的方法,比较适合的有: every、some、filter、findIndex 。 这种

    2024年02月22日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包