js中判断数组中是否包含某元素的方法有哪些_js判断数组里面是否包含某个元素

js中判断数组中是否包含某元素的方法有哪些_js判断数组里面是否包含某个元素方法一: arr.indexOf(某元素):未找到则返回-1。 实际用法:if(arr.indexOf(某元素)>-1){//则包含该元素}1例:varfruits=["Banana","Orange","Apple","Mango"];vara=fruits.indexOf("Apple");//2//以上输出结果意味着"Apple"元

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

方法一: 
arr.indexOf(某元素):未找到则返回 -1。 
实际用法:

if(arr.indexOf(某元素) > -1){
  
  //则包含该元素}
  • 1

例:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");  // 2
//以上输出结果意味着 "Apple" 元素位于数组中下标为 2 的位置。
  • 1
  • 2
  • 3

indexOf()完整语法:

array.indexOf(item,start) 
参数: 
item:必须。查找的元素。 
start:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length – 1。如省略该参数,则将从字符串的首字符开始检索。

例:

var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple",4);  // 6
  • 1
  • 2

注:string.indexOf()返回某个指定的字符串值在字符串中首次出现的位置。

1.该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。 
2. stringObject 中的字符位置是从 0 开始的。 
3. 查找字符串最后出现的位置,使用 lastIndexOf() 方法。

方法二:arr.find() 
数组实例的find()用于找出第一个符合条件的数组元素。它的参数是一个回调函数,所有数组元素依次遍历该回调函数,直到找出第一个返回值为true的元素,然后返回该元素,否则返回undefined。 
find() 方法为数组中的每个元素都调用一次函数执行

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined 
    注意: find() 对于空数组,函数是不会执行的。 
    注意: find() 并没有改变数组的原始值。
[1, 5, 10, 15].find(function(value, index, arr) { 
   
    return value > 9;
}) // 10
  • 1
  • 2
  • 3

实际用法:

arr.find(function(value) { 
   
    if(value === 要查找的值) { //则包含该元素 }
})
  • 1
  • 2
  • 3
  • 4
  • 5

方法三:array.findIndex() 
array.findIndex()和array.find()十分类似,返回第一个符合条件的数组元素的位置,如果所有元素都不符合条件,则返回-1。 
findIndex() 方法为数组中的每个元素都调用一次函数执行:

当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。 
如果没有符合条件的元素返回 -1

注意: findIndex() 对于空数组,函数是不会执行的。 
注意: findIndex() 并没有改变数组的原始值

[1,5,10,15].findIndex(function(value, index, arr) { 
   
    return value > 9;
}) // 2
  • 1
  • 2
  • 3

方法二和方法三,这两个方法都可以发现NaN,弥补了方法一IndexOf()的不足。

[NaN].indexOf(NaN) 
// -1

[NaN].findIndex(y => Object.is(NaN, y))
// 0
  • 1
  • 2
  • 3
  • 4
  • 5

方法四:for() 
遍历数组,然后 if 判断

var arr = [1, 5, 10, 15];
//传统for
for(let i=0; i<arr.length; i++) {
    if(arr[i] === 查找值) {
        //则包含该元素
    }
}
// for...of
for(v of arr) {
    if(v === 查找值) {
        //则包含该元素
    }
}
//forEach
arr.forEach(v=>{
    if(v === 查找值) {
        //则包含该元素
    }

}) 别的做法:

js中存在一个数组,如何判断一个元素是否存在于这个数组中呢,首先是通过循环的办法判断,代码如下:

复制代码
var arr = ['a','s','d','f'];
console.info(isInArray(arr,'a'));//循环的方式

/**
 * 使用循环的方式判断一个元素是否存在于一个数组中
 * @param {Object} arr 数组
 * @param {Object} value 元素值
 */
function isInArray(arr,value){
    for(var i = 0; i < arr.length; i++){
        if(value === arr[i]){
            return true;
        }
    }
    return false;
}
复制代码

这种方式是比较通用的一种方式,但是需要自己写函数,下面看一下第二种方式:

var arr = ['a','s','d','f'];
                console.info(arr.indexOf('a'));//在IE某些版本中不支持,可以自行扩展

这种方式是直接使用数组的indexOf方法来判断,如果元素存在于数组中,那么返回元素在数组中的下标值,如果不存在,那么返回-1,注意indexOf是区分大小写的,字母O必需大写,不然是会报错的,另外,该方法在某些版本的IE中是不起作用的,因此在使用之前需要做一下判断,修改后的代码如下所示:

复制代码
/**
 * 使用indexOf判断元素是否存在于数组中
 * @param {Object} arr 数组
 * @param {Object} value 元素值
 */
function isInArray3(arr,value){
    if(arr.indexOf&&typeof(arr.indexOf)=='function'){
        var index = arr.indexOf(value);
        if(index >= 0){
            return true;
        }
    }
    return false;
}
复制代码

第三种方式,就是使用jquery的inArray方法,该方法返回元素在数组中的下标,如果不存在与数组中,那么返回-1,代码如下所示:

复制代码
/**
 * 使用jquery的inArray方法判断元素是否存在于数组中
 * @param {Object} arr 数组
 * @param {Object} value 元素值
 */
function isInArray2(arr,value){
    var index = $.inArray(value,arr);
    if(index >= 0){
        return true;
    }
    return false;
}
复制代码

这种方式可以用来删除一个数组中的未知下标值的元素,代码如下所示:

var arr = ['a','s','d','f'];
console.info("删除元素之前的数组:"+arr);
arr.splice($.inArray('a',arr),1);
console.info("删除元素之后的数组:"+arr);

执行结果是:

[Web浏览器] "删除元素之前的数组:a,s,d,f"    /test/index.html (12)
[Web浏览器] "删除元素之后的数组:s,d,f"  /test/index.html (14)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180430.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • html里制作简单导航栏

    html里制作简单导航栏今天简单的做了一下网页里的导航栏。效果如下:代码: 实验3 ul{/*设置导航栏的框框*/ margin:30pxauto;/*框框整体的位置,30px是指离网页的顶部和下部的距离,auto控制的是左右距离为自动调节*/ width:600px;/*框框的宽度*/ height:350px;/*框框的长度*/ pad

    2022年5月28日
    53
  • Idea激活码最新教程2024.3.5版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.3.5版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 3 5 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 3 5 成功激活

    2025年5月31日
    8
  • 网络天才网页版在线玩无需下载(中国破解网络的天才)

    网络天才这是一款解谜问答类的娱乐游戏,用独具色彩的画面风格,以阿拉丁为故事背景,可以用几个问题来猜出你心中所想,并体验多种思维导向与解谜挑战,非常适合闲暇时间里休闲娱乐一下。感兴趣的快来下载吧!游戏特色释放你的创造力由于Geniz,你可以解锁,并玩转新的背景,随意定制Akinator。这个精灵将变成一个吸血鬼、牛仔或迪斯科舞者。继续猜每天尝试找出5个神秘人物,赢得特别的天才,用来定制你最喜欢的妖怪…

    2022年4月18日
    5.6K
  • poj 3074 Sudoku(Dancing Links)

    poj 3074 Sudoku(Dancing Links)

    2022年1月13日
    60
  • 虚拟机ping不通主机,但是主机可以ping通虚拟机

    虚拟机ping不通主机,但是主机可以ping通虚拟机我在Windows10系统安装了虚拟机,设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机。我的操作是:关闭防火墙,发现虚拟机可以ping通主机了。说明是Windows10防火墙阻止了。现在存在的问题是:如果我一直关闭防火墙也不是个事啊?这样做会影响我的电脑安全的。于是我想我要先确定防火墙阻止了什么,导致需要关闭防火墙?于是网上查看资…

    2025年8月11日
    7
  • jenkins allure_Jenkins

    jenkins allure_Jenkins前言jenkins集成了allure插件,安装插件后运行pytest+allure的脚本即可在jenkins上查看allure报告了。allure安装在运行代码的服务器本机,我这里是用的dock

    2022年7月31日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号