首页 > 编程语言 >JavaScript判断数组是否包含某个值的6种方法

JavaScript判断数组是否包含某个值的6种方法

时间:2023-09-05 15:05:22浏览次数:36  
标签:arr return val JavaScript item 数组 某个 true

循环

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;
}

使用数组的some、filter方法

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

使用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

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

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

注意

  1. indexOf() 方法对大小写敏感!如果要检索的字符串值没有出现,则该方法返回 -1。
  2. 在比较第一个参数与数组中的每一项时,会使用全等操作符,即要求查找的项必须严格相等
  3. 数组的位置是ECMAScript5为数组实例新增的,支持的浏览器有IE9+,Firefox,Safari,Opera,Chrome

array.includes

此方法判断数组中是否存在某个值,如果存在返回 true,否则返回false。

[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[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 同第3种方法类似。

利用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]

标签:arr,return,val,JavaScript,item,数组,某个,true
From: https://blog.51cto.com/u_15930000/7372484

相关文章

  • 原生javascript实现拖拽
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • 无涯教程-JavaScript - DATE函数
    描述DATE函数返回特定日期的序列号。语法DATE(year,month,day)争论Argument描述Required/Optionalyearyear参数的值可以包含1-4位数字。Excel会根据计算机使用的日期系统解释年份参数。默认情况下,MicrosoftExcelforWindows使用1900日期系统。请参阅下面的......
  • 无涯教程-JavaScript - DVARP函数
    描述DVARP函数通过使用列表或数据库中符合您指定条件的记录的字段(列)中的数字,基于整个总体计算总体的方差。语法DVARP(database,field,criteria)争论Argument描述Required/Optionaldatabase组成列表或数据库的单元格范围。数据库是相关数据的列表,其中相关信息......
  • 无涯教程-JavaScript - DVAR函数
    描述DVAR函数使用与指定条件相匹配的列表或数据库的列中的数字,根据样本估算总体的方差。语法DVAR(database,field,criteria)争论Argument描述Required/Optionaldatabase组成列表或数据库的单元格范围。数据库是相关数据的列表,其中相关信息的行是记录,数据的列......
  • 软件测试|快速、可靠的JavaScript依赖管理工具——yarn
    简介Yarn是一个由Facebook于2016年推出的JavaScript软件包管理器。它的目标是解决npm(Node.js的默认软件包管理器)在性能和可靠性方面的一些问题。Yarn旨在提供更快、更安全、更稳定的依赖项安装过程,使JavaScript开发人员能够更轻松地管理和构建项目。本文将详细介绍Yarn的特点、优势......
  • JavaScript-属性描述对象
    概述JavaScript提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。这个内部数据结构称为“属性描述对象”(attributesobject)。每个属性都有自己对应的属性描述对象,保存该属性的一些元信息。下面是属性描述对象的一个例子。{value:123,......
  • 【群答疑】jmeter关联获取上一个请求返回的字符串,分割后保存到数组,把数组元素依次作为
    一个非常不错的问题,来检验下自己jmeter基本功 可能有同学没看懂题,这里再解释一下,上面问题需求是:jmeter关联获取上一个请求返回的字符串,分割后保存到数组,把数组元素依次作为下一个请求的入参 建议先自己思考,如果2小时没做出来,可以参考文末评论区的实现思路(仅登录后可见) ......
  • 2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里, 每个像
    2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里,每个像素点的取值范围[0,s]的整数,请你给图像每个像素点值加上一个整数k(可以是负数),像素值会自动截取到[0,s]范围,当像素值<0,会更改为0,当新像素值>s,会更改为s,这样就可以得到新的arr,想让所有像素点的......
  • idea git重置到某个版本然后提交
    1.复制版本号(git-显示历史记录)2.通过命令重置gitreset--softe28b54d3a7f354ca15e2f3d0c74978c75fcf44213.再次提交idea自带或者命令行gitpush-f-uoriginmaster4.参考链接https://blog.csdn.net/weixin_43888177/article/details/131204853......
  • javascript中的iframe
    上级向iframe传值1.用postMessage在上级用:iframeElement.contentWindow.postMessage("发送的消息内容","*");在iframe内接收消息:window.addEventListener("message",function(ev){let收到的消息=ev.data;.....}); ......