javascript - 如何检查某个成员是否在一个数组内?
ringa_lee
ringa_lee 2017-04-11 11:13:20
[JavaScript讨论组]

如何判断某个成员是否在数组内呢?
目前搜集了两种方法

  1. 自制的check方法,部署在Array.prototype对象上

Array.prototype.check =  function(ele){
    var i, l = this.length, res = false;
    for(i = 0; i < l; i++){
        ele === this[i]?res = true:void 0;
    }
    return res;
}
  1. 聪明一些的方法(别人想出来的),将数组转换为string再用indexOf判断
    arr.toString().indexOf(num)===-1?console.log('not in'):console.log('in');

有没有更好一点的方法呢?

ringa_lee
ringa_lee

ringa_lee

全部回复(6)
迷茫

数组本身就有indexOf()方法(ES5)和includes()方法(ES7)。

另外,你说的那个聪明的方法是有问题的。比如有个数组:

var arr = [12, 345, 67, 890];

你用那个聪明的方法测一下数字458在不在数组中试试。

天蓬老师

es5 就有了 数组的 indexOf 方法。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

伊谢尔伦

你好像没考虑nan

黄舟

据我所知,主要有以下这些方法。
indexOf
lastIndexOf
includes
find
findIndex

甚至可以通过filter,判断过滤后的数组长度实现更复杂的查找

PHP中文网

jq有一个inArray方法,你可以看一下,其他人的答案也可以的inArray

PHP中文网

楼上说得都很对,但是数组indexOf的兼容性并不好,其实这个问题可以归结为典型的数组去重。
`//类似hash表的方法
var mArr = new Array();
var hash = new Object();
for(var i=0;i<mArr.length;i++)
{

     hash[mArr] = 1;

}
function check(a){

    if(hash[a]==1){
        return true;
    }else{
        return false;
    }

}
`
Ps: 手机敲代码好难受。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号