您的当前位置:首页>全部文章>文章详情

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

CrazyPanda发表于:2024-02-23 23:25:29浏览:349次TAG:



知识回调

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

场景复现

在后台管理系统的项目开发中,对于数组对象的处理非常常见,比如数组对象的排序数组对象的筛选数组对象的模糊查询。往期文章我们介绍了关于数组对象排序和筛选的内容,本期文章主要介绍判断数组对象是否含有某个值的方法


实现方式(6种)

利用循环遍历数组元素

  • 使用循环遍历数组元素是比较传统,也比较老的实现方案,但是不可否认的是,这种方法在浏览器种效率较高,并且理解起来很快

  • 但是,当限制条件很多时,会产生多层循环和多次数据处理的问题。

function contains(arr, val) {
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === val) {
            return true;
        }
    }
    return false;
}
contains([1,2,3],3);//true

当然,也可以使用while语句

function contains(arr, val) {
    var i = arr.length;
    while (i--) {
       if (arr[i] === val){
           return true;
       }
    }
    return false;
}
contains([1,2,3,4],1);//true

利用some,filter方法

使用some方法更加简洁,一旦找到元素,迭代就会终止,从而避免了不必要的迭代周期(不过使用循环也能解决,但是增加了代码量)

示例代码:

function contains(arr, val) {
    return arr.some(item => item === val);
}

这里可以直接使用箭头函数对数据进行筛选,相比循环而言更加简洁。

使用filter方法最为常见,filter本身为过滤的意思,一般在filter的箭头函数中添加筛选条件
注意array.filter(e=>e==x).length > 0等效于array.some(e=>e==x),但some更有效)

示例代码:

function contains(arr, val) {
    return arr.filter((item)=> { return item == val }).length > 0;
}

利用array.indexOf方法

  • array.indexOf此方法判断数组中是否存在某个值,如果存在返回数组元素的下标,否则返回-1。

  • indexOf方法在筛选数组数据时十分常用,一般用于模糊查询和关键字搜索。

[1, 2, 3].indexOf(1);//0
["foo", "fly63", "baz"].indexOf("fly63");//1
[1, 2, 3].indexOf(4);//-1

注意:

  • indexOf() 方法对大小写敏感。如果要检索的字符串值没有出现,则该方法返回 -1。

  • 在比较第一个参数与数组中的每一项时,会使用全等操作符,即要求查找的项必须严格相等

  • 数组的位置是ECMAScript5为数组实例新增的,支持的浏览器有IE9+,Firefox,Safari,Opera,Chrome。

利用array.includes方法

  • array.includes(searchElement[, fromIndex]) 此方法判断数组中是否存在某个值

  • 如果存在返回true,否则返回false。

[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false

它还接受可选的第二个参数fromIndex

[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true

不像indexOf,它采用严格相等比较。这意味着您可以检测数组是否包含NaN

[1, 2, NaN].includes(NaN); // true

也不同于indexOf,includes不会跳过缺失的索引

new Array(5).includes(undefined); // true

利用array.find方法

find用于返回数组中满足条件的第一个元素的值,如果没有,返回undefined

let numbers = [12, 5, 8, 130, 44];
let result = numbers.find(item => {
    return item > 8;
});
console.log(result);//12
//元素是对象
let items = [
    {id: 1, name: 'something'},
    {id: 2, name: 'anything'},
    {id: 3, name: 'nothing'},
];
let item = items.find(item => {
    return item.id == 3;
});
console.log(item) //Object { id: 3, name: "nothing" }

除了find,我们也可以使用array.indIndex。返回数组中满足条件的第一个元素的索引(下标), 如果没有找到,返回-1(和第三种方法indexOf类似)

利用set中has方法

function contains(arr, val) {
  return new Set(arr).has(val)
}
contains([1,2,3],2);//true

通过new set([])将数组转换成Set对象,set.prototype.has(value)判断该值是否存在于Set对象中,返回布尔值

延伸:除此之外,还可以利用它进行数组去重

let arr2 = new Set([1,1,2,3,4]) 
let arr3 = [...arr2] 
console.log(arr2,arr3) // {1,2,3,4} [1,2,3,4]

猜你喜欢

【HTML】 html 初始化执行方法
HTML的初始化执行方法有多种。以下是其中几种常见的方式:&nbsp;&nbsp;1. JavaScript的DOMContentLoaded事件:当页面加载完成并且所有元素都已经被创建时,会触发该事件。可以通过在JavaScript文件或者内联script标签中编写相应的函数来处理这个事件。示例如下:document.addEventListener(&quot;DOMContentLoaded&quot;,&nbsp;function()&nbsp;{ //&nbsp;在此处添加需要执行的代
发表于:2024-02-07 浏览:411 TAG:
【Html】H5跳转支付宝小程序的两种方式
H5跳转支付宝小程序的两种方式,第一种方式还可以打开支付宝生活号网页,只是换成appid换成网页应用appid,page参数换成url参数,url对应的是自己页面的链接
发表于:2024-03-28 浏览:357 TAG:
【前端】微信小程序推送订阅消息
业务需要,商城类小程序,要在用户下单支付成功后,推送消息通知用户。首先想到的是小程序模板消息,微信公众号模板消息已经用过很多了,小程序模板消息确是第一次做。小程序模板消息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;参考https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html 小程序模板消息在2020年已经改版了,现在推送模板消息都会推送到服务通知里面,
发表于:2024-03-21 浏览:350 TAG:
【前端】如何使用Redis和TypeScript开发高性能计算功能
如何使用Redis和TypeScript开发高性能计算功能概述:Redis是一个开源的内存数据结构存储系统,具有高性能和可扩展性的特点。TypeScript是JavaScript的超集,提供了类型系统和更好的开发工具支持。结合Redis和TypeScript,我们可以开发出高效的计算功能来处理大数据集,并充分利用Redis的内存存储和计算能力。本文将介绍如何利用Redis和TypeScript开发高性能计算功能,包括数据存储、数据处理和结果缓存等方面。我们将使用Redis的常用数据结构和命令,并
发表于:2024-04-06 浏览:361 TAG:
【前端】JavaScript判断数组对象是否含有某个值的方法(6种)
【JavaScript基础语法】web前端判断数组对象是否含有某个值的方法(6种)知识回调场景复现实现方式(6种)利用循环遍历数组元素利用some,filter方法利用array.indexOf方法利用array.includes方法利用array.find方法利用set中has方法本期小结知识回调文章内容文章链接vue3 antd table表格的增删改查(一)input输入框根据关键字搜索【后台管理系统纯前端filter过滤】https://blog.csdn.net/XSL_HR/arti
发表于:2024-02-23 浏览:350 TAG:
【前端】Ant Design of Vue安装
关于 ant-design-vue&nbsp;#众所周知,Ant Design 作为一门设计语言面世,经历过多年的迭代和积累,它对 UI 的设计思想已经成为一套事实标准,受到众多前端开发者及企业的追捧和喜爱,也是 React 开发者手中的神兵利器。希望 ant-design-vue 能够让 Vue 开发者也享受到 Ant Design 的优秀设计。ant-design-vue 是 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步,组件的 html 结构和 cs
发表于:2024-04-15 浏览:310 TAG:
【前端】2023年最流行的10款前端UI框架排名
&nbsp; &nbsp; &nbsp; &nbsp; 上次我们发布了《2022年最流行的11款PHP框架》,争议很大!今天我们来继续探讨一下:2023年最流行的10款前端UI框架排名。一:前端UI框架是什么?前端UI框架是一种基于HTML、CSS、JavaScript等前端技术的开发工具集,提供了一系列的UI组件、样式、布局等基础功能,使得前端开发人员可以更加高效地开发出具有良好用户体验的Web应用。二:为什么要使用前端UI框架?前端UI框架可以大大减少前端开发人员的工作量,提高开发效
发表于:2023-12-06 浏览:410 TAG:
【前端】支付宝和微信小程序普通二维码跳转二合一
业务需要:系统支持微信小程序和支付宝小程序,现在要扫码跳转到对应小程序,要使用一个二维码,并能携带业务参数,用户使用微信扫码,就能打开微信小程序并获取参数,使用支付宝扫码,就能打开支付宝小程序,并获取参数一、 微信小程序普通二维码跳转实现1、在微信公众平台-开发管理-开发设置中找到【扫描普通链接二维码打开小程序】去配置二维码链接地址2、配置要求二维码规则:配置为二维码对应的链接,其中最后要加/,这样才可以动态传参。扫描后面参数不同的二维码都能跳转。这样类似与测试链接中&nbsp;https:
发表于:2024-03-07 浏览:275 TAG:
【前端】html Antv L7 + mapbox 实现3D地图 3D中国地图 不限于中国地图
echarts的3D地图实在太丑了,还一堆bug使用阿里的Antv可视化库L7,实现3D地图,底图是mapbox 参考示例:https://l7.antv.antgroup.com/zh/examples/polygon/3d#floatMap如果不需要底图样式,可把Scene的style设置为blank 直接上代码了,vue的就不说了,项目是html的mapbox依赖&lt;script&nbsp;src=&#39;https://api.mapbox.com/mapbox-gl-js/v2.
发表于:2024-01-18 浏览:448 TAG:
【前端】前端实现文件下载自动打开预览的解决方法
问题:前端使用React开发,想要下载阿里云OSS存储的视频文件,使用了&lt;a&gt;标签,点击后就会在浏览器打开预览,查找到了几个解决办法,在此记录一下。一、 下载文件的三种通用方式1、使用iframe实现只需要传一个文件下载地址的url即可&nbsp;downloadFile&nbsp;=&nbsp;(url)&nbsp;=&gt;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//下载方法 &nbsp;&nbsp;&nbsp;&nbsp;console.log(url)
发表于:2024-05-18 浏览:295 TAG: