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 相关文章推荐
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 Javascript
简介JavaScript中toTimeString()方法的使用
Jun 12 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
input type=file 选择图片并且实现预览效果的实例
Oct 26 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
Feb 09 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
Sep 30 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 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
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[02:07]DOTA2超级联赛专访BBC:难忘网吧超神经历
2013/06/09 DOTA
python基础教程项目四之新闻聚合
2018/04/02 Python
python学生管理系统开发
2019/01/30 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
django一对多模型以及如何在前端实现详解
2019/07/24 Python
深入了解python中元类的相关知识
2019/08/29 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python如何构建mock接口服务
2021/01/28 Python
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
Sql面试题
2013/03/20 面试题
迎国庆横幅标语
2014/10/08 职场文书
事业单位聘任报告
2015/03/02 职场文书
同学聚会通知短信
2015/04/20 职场文书
结婚幸福感言
2015/08/01 职场文书