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图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 Javascript
Javascript中找到子元素在父元素内相对位置的代码
Jul 21 Javascript
自动最大化窗口的Javascript代码
May 22 Javascript
JS+CSS实现美化的下拉列表框效果
Aug 11 Javascript
JavaScript操作HTML DOM节点的基础教程
Mar 11 Javascript
详解JavaScript节流函数中的Throttle
Jul 16 Javascript
jQuery实现的兼容性浮动层示例
Aug 02 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
Feb 22 Javascript
读懂CommonJS的模块加载
Apr 19 Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 Javascript
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
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
9段PHP实用功能的代码推荐
2014/10/14 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
js 走马灯简单实例
2013/11/21 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
python在控制台输出进度条的方法
2015/06/20 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
东方红海科技面试题软件测试方面
2012/02/08 面试题
临床医学专业个人的自我评价
2013/09/27 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
酒店开业主持词
2015/07/02 职场文书
政协常委会议主持词
2015/07/03 职场文书
课题研究阶段性总结
2015/08/13 职场文书
文艺委员竞选稿
2015/11/19 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python