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 相关文章推荐
JQuery与Ajax常用代码实现对比
Oct 03 Javascript
JavaScript 程序编码规范
Nov 23 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
学习JavaScript设计模式(继承)
Nov 26 Javascript
微信小程序 获取设备信息 API实例详解
Oct 02 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
用Axios Element实现全局的请求loading的方法
Mar 15 Javascript
基于vue通用表单解决方案的思考与分析
Mar 16 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
Sep 05 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
利用js实现简单开关灯代码
Nov 23 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
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
python之wxPython菜单使用详解
2014/09/28 Python
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Python基于内置函数type创建新类型
2020/10/22 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
日语翻译个人求职的自我评价
2013/10/14 职场文书
模范家庭事迹材料
2014/02/10 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
少年雷锋观后感
2015/06/10 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
JavaScript实现栈结构详细过程
2021/12/06 Javascript