JavaScript实现的in_array函数


Posted in Javascript onAugust 27, 2014

在JS中要判断一个值是否在数组中并没有函数直接使用,如PHP中就有in_array()这个函数。但我们可以写一个类似in_array()函数来判断是一个值否在函数中。

/**
 * JS判断一个值是否存在数组中
 */
 
// 定义一个判断函数
var in_array = function(arr){
  // 判断参数是不是数组
  var isArr = arr && console.log(
      typeof arr==='object' ? arr.constructor===Array ? arr.length ? arr.length===1 ? arr[0]:arr.join(','):'an empty array': arr.constructor: typeof arr 
    );
 
  // 不是数组则抛出异常
  if(!isArr){
    throw "arguments is not Array"; 
  }
 
  // 遍历是否在数组中
  for(var i=0,k=arr.length;i<k;i++){
    if(this==arr[i]){
      return true;  
    }
  }
 
  // 如果不在数组中就会返回false
  return false;
}
 
// 给字符串添加原型
String.prototype.in_array = in_array;
// 给数字类型添加原型
Number.prototype.in_array = in_array;
 
// 声明一个数组
var arr = Array('blue','red','110','120');
 
// 字符串测试
var str = 'red';
var isInArray = str.in_array(arr);
alert(isInArray); // true
 
// 数字测试
var num = 119;
var isInArray = num.in_array(arr);
alert(isInArray); // false

如果传入的不是数组则会抛出异常

 

/**
 * JS判断一个值是否存在数组中
 */
 
// 定义一个判断函数
var in_array = function(arr){
  // 判断参数是不是数组
  var isArr = arr && console.log(
      typeof arr==='object' ? arr.constructor===Array ? arr.length ? arr.length===1 ? arr[0]:arr.join(','):'an empty array': arr.constructor: typeof arr 
    );
 
  // 不是数组则抛出异常
  if(!isArr){
    throw "arguments is not Array"; 
  }
 
  // 遍历是否在数组中
  for(var i=0,k=arr.length;i<k;i++){
    if(this==arr[i]){
      return true;  
    }
  }
 
  // 如果不在数组中就会返回false
  return false;
}
 
// 给字符串添加原型
String.prototype.in_array = in_array;
// 给数字类型添加原型
Number.prototype.in_array = in_array;
 
// 声明一个数组
var arr = null;
 
// 字符串测试
var str = 'red';
var isInArray = str.in_array(arr);
alert(isInArray); // uncaught exception: arguments is not Array

直接报错:

JavaScript实现的in_array函数

Javascript 相关文章推荐
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
Apr 18 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
Vue.js实现的购物车功能详解
Jan 27 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
js实现小星星游戏
Mar 23 Javascript
vue+koa2搭建mock数据环境的详细教程
May 18 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
Jun 06 jQuery
JavaScript AJAX之惰性载入函数
Aug 27 #Javascript
IE浏览器不支持getElementsByClassName的解决方法
Aug 27 #Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
Aug 27 #Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 #Javascript
JavaScript中switch判断容易犯错的一个细节
Aug 27 #Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 #Javascript
JavaScript中输出标签的方法
Aug 27 #Javascript
You might like
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python 成功引入包但无法正常调用的解决
2020/03/09 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
学籍证明模板
2014/11/21 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
公司催款律师函
2015/05/27 职场文书
东京审判观后感
2015/06/01 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
mysql left join快速转inner join的过程
2021/06/30 MySQL
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis