zoukankan      html  css  js  c++  java
  • 判断某个值是否在某数组内的方法

    判断某个值是否在某数组内的方法如下:

    1.jQuery.inArray( value, array [, fromIndex ] )  ------  fromIndex( 数组索引值,表示从哪里在开始查找。默认值是0 )

       描述:在数组中查找指定值并返回它的索引(如果没有找到,则返回-1)

    inArray: function( elem, arr, i ) {
        var len;
        if ( arr ) {
            if ( indexOf ) {
                return indexOf.call( arr, elem, i );
            }
            len = arr.length;
            i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
            for ( ; i < len; i++ ) {
                // Skip accessing in sparse arrays
                if ( i in arr && arr[ i ] === elem ) {
                    return i;
                }
            }
        }
        return -1;
    },

    $.inArray("b",["a","b","abc"])  ------   1
    $.inArray("c",["a","b","abc"])  ------   -1

    2.循环操作

    function in_array(elem, arr) {
      var i = 0, n = arr.length;
      for (;i < n;++i)
        if (arr[i] === elem)
          return true;
      return false;
    }

    in_array("b",["a","b","abc"])  ------   true
    in_array("c",["a","b","abc"])  ------   false

    3.正则操作

    Array.prototype.in_array=function(elem){
        var r=new RegExp(','+elem+',');
         return r.test(','+this.join()+',');
    };

    [1,"d","abd","c"].in_array("1")  ------   true
    [1,"d","abd","c"].in_array("ddd")  ------   false

    4.indexOf()  ------  存在兼容性,IE中Array并没有这个方法

    function in_array(elem,arr){ 
         var str=','+arr.join(",")+","; 
         return str.indexOf(","+elem+",") != -1; 
    }

    in_array("b",["a","b","abc"])  ------   true
    in_array("c",["a","b","abc"])  ------   false

    关于function in_array()和Array.prototype.in_array=function(){}这俩种形式都可以,一个是函数,另一个是类方法的扩展。

    如果大家有更好的方法或者其他方法,可以留言发表自己的看法。

  • 相关阅读:
    Android权限 uses-permission
    Android中的颜色设置
    px 与 dp, sp换算公式?
    如何成为一名黑客?(转)
    uva 1291(dp)
    框架模式 MVC 在Android中的使用
    CCA概述和安装
    机房收费系统合作版(三)——UI思索
    (36)JS运动之使物体向右运动
    二叉查找树的非递归操作
  • 原文地址:https://www.cnblogs.com/wjmm/p/8119285.html
Copyright © 2011-2022 走看看