JavaScript中扩展Array contains方法实例


Posted in Javascript onAugust 23, 2020

首先三水点靠木小编先为大家分享一个比较好用的代码

Array.prototype.contains = function (a)
{
  if ("string" == typeof a || "number" == typeof a) {
    for (var b in this) {
      if (a == this [b]) {
        return!0;
      };
    }
  }
  return!1
};

先判断传入的参考是字符与数字才可以判断,这样就比较精准。

下面是一些推荐资料可以看看

javascript的Array没有contains方法,有时候这会不方便,contains方法实现很简单:

function contains(a, obj) {
 var i = a.length;
 while (i--) {
  if (a[i] === obj) {
   return true;
  }
 }
 return false;
}

当然我们也可以扩展Array类,如下js

Array.prototype.contains = function(obj) {
 var i = this.length;
 while (i--) {
  if (this[i] === obj) {
   return true;
  }
 }
 return false;
}

这样就可以方便的使用contains方法了:

alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains('2')); // => false

下面是三水点靠木小编整理的几种方法

一个小误区 JS中的contains

在Java语言中,contains可以用于判断str1是否包含str2

原生JS中是有contains方法的

结构与测试代码如下

<div id="div1">
<div id="div2">
3water.com
</div>
</div>
<script type="text/javascript">
var div1= document.getElementById("div1");
var div2= document.getElementById("div2");
console.log(div1.contains(div2));

var str1="3water.com";
var str2="3water";
console.log(str1.contains(str2));
</script>

JavaScript中扩展Array contains方法实例

但它并不是字符串方法,,仅用于判断DOM元素的包含关系,参数是Element类型

JavaScript中扩展Array contains方法实例

若要在JS中判断俩字符串的包含关系,用indexOf()

JavaScript中扩展Array contains方法实例

但是我们可以通过扩展的方法来实现

<div id="div1">
<div id="div2">
3water.com
</div>
</div>
<script type="text/javascript">
var div1= document.getElementById("div1");
var div2= document.getElementById("div2");
console.log("div1.contains(div2)="+div1.contains(div2));

//字符扩展contains就不会报错了
String.prototype.contains = function(a) {
 return - 1 < this.indexOf(a)
};

var str1="3water.com";
var str2="3water";
console.log("str1.contains(str2)="+str1.contains(str2));

//数组扩展contains适用于数组判断
Array.prototype.contains = function(a) {
 if ("string" == typeof a || "number" == typeof a) for (var b in this) if (a == this[b]) return ! 0;
 return ! 1
};

var arr1=["3water.com","jbzj.com","3water.com"];
var str3="3water.com";
console.log("arr1.contains(str3)="+arr1.contains(str3));
</script>

下面是运行结果

JavaScript中扩展Array contains方法实例

当然也有通过正则实现的JS扩展Array,添加contains方法

Array.prototype.contains = function(item){
 return RegExp("\\b"+item+"\\b").test(this);
};

直接返回true/false

JS判断Array数组中是否包含指定元素

1.调用方式:

var arr=["a","b"];
alert(arr.in_array("a"))

2.JS判断数组是否包含指定元素方法定义:

Array.prototype.contains = function(obj) {
  var i = this.length;
  while (i--) {
    if (this[i] === obj) {
      return true;
    }
  }
  return false;
}
或
Array.prototype.contains = function(element) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] == element) {
      return true;
    }
  }
  return false;
}
或
Array.prototype.in_array = function(e) {
  for(i=0; i<this.length && this[i]!=e; i++);
  return !(i==this.length);
}


还有一个大牛是这样写的:
Array.prototype.S = String.fromCharCode(2);
Array.prototype.in_array = function(e) {
  var r = new RegExp(this.S+e+this.S);
  return (r.test(this.S+this.join(this.S)+this.S));
}

站外扩展:

Jquery实现方式:http://api.jquery.com/jQuery.inArray/

具体选择看个人需求,三水点靠木小编建议能不用正则则不用,效率问题,代码是简洁就怕一些老的浏览器不支持。

Javascript 相关文章推荐
js parseInt(&quot;08&quot;)未指定进位制问题
Jun 19 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
jQuery检测鼠标左键和右键点击的方法
Mar 17 Javascript
node.js实现快速截图
Aug 27 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
bootstrap multiselect 多选功能实现方法
Jun 05 Javascript
vue-resource 拦截器(interceptor)的使用详解
Jul 04 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
JavaScript设计模式之单例模式简单实例教程
Jul 02 Javascript
VUE 单页面使用 echart 窗口变化时的用法
Jul 30 Javascript
JavaScript中消除闭包的一般方法介绍
Mar 16 #Javascript
jQuery实现的支持IE的html滑动条
Mar 16 #Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 #Javascript
nw.js实现类似微信的聊天软件
Mar 16 #Javascript
JavaScript控制table某列不显示的方法
Mar 16 #Javascript
详解addEventListener的三个参数之useCapture
Mar 16 #Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 #Javascript
You might like
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python对象的属性访问过程详解
2020/03/05 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
Ajax的优点和缺点
2014/11/21 面试题
小学亲子活动总结
2014/07/01 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
公开致歉信
2019/06/24 职场文书
导游词之西安骊山
2019/12/20 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript