快速查找数组中的某个元素并返回下标示例

复制代码 代码如下:

  //常规实现一:

  function isHasElementOne(arr,value){

  for(var i = 0,vlen = arr.length; i < vlen; i++){

  if(arr[i] == value){

  return i;

  }

  }

  return -1;

  }

  //实现二:

  function isHasElementTwo(arr,value){

  var str = arr.toString();

  var index = str.indexOf(value);

  if(index >= 0){

  //存在返回索引

  var reg1 = new RegExp("((^|,)"+value+"(,|$))","gi");

  return str.replace(reg1,"$2@$3").replace(/[^,@]/g,"").indexOf("@");

  }else{

  return -1;//不存在此项

  }

  }

  补充:

  

复制代码 代码如下:

  function isHasElement(arr,value){

  var str = arr.toString();

  var index = str.indexOf(value);

  if(index >= 0){

  //存在返回索引

  //"(^"+value+",)|(,"+value+",)|(,"+value+"$)"

  value = value.toString().replace(/(\[|\])/g,"\\$1");

  var reg1 = new RegExp("((^|,)"+value+"(,|$))","gi");

  return str.replace(reg1,"$2@$3").replace(/[^,@]/g,"").indexOf("@");

  }else{

  return -1;//不存在此项

  }

  }

  最近在写jquery的combobox插件时遇到效率问题,再加上jquery选择器的类帅选,导致效率很慢。采用方式二后,效率明显有所提升。