javascript中判断一个值是否在数组

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

例1

 代码如下 复制代码


/*
*
*   判断在数组中是否含有给定的一个变量值
*   参数:
*   needle:需要查询的值
*   haystack:被查询的数组
*   在haystack中查询needle是否存在,如果找到返回true,否则返回false。
*   此函数只能对字符和数字有效
*
*/

 

function findnum(){   
        var a=[1,2];//假设a是数组,obj是要判断的数
        var obj=1;
        var b = false;
        for (var i = 0; i < a.length; i++) {
            if (a[i] == obj) {
                b = true;break;
            }
        }
        if (b)
            alert("数组中存在a[" + i + "]:" + a[i]);
        else
            alert("数组中不存在"+obj);
}

例2

 代码如下 复制代码

/** 
 * 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

JS判断一个数组中是否有重复值的

var ary = new Array("111","22","33","111");

var s = ary.join(",")+",";

 for(var i=0;i<ary.length;i++) {

 if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1) {

  alert("数组中有重复元素:" + ary[i]);

  break;

 }

}

例5

 代码如下 复制代码

function isRepeat(arr){

     var hash = {};

     for(var i in arr) {

         if(hash[arr[i]])

              return true;

         hash[arr[i]] = true;

     }

     return false;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值