zoukankan      html  css  js  c++  java
  • JS在一个数组中查找某个用户输入的值,返回对应值所在索引值

    方法有很多种

    第一:直接循环,判断输出

    第二:使用indexOf

    正常来说,为了增加工作效率一般会选择indexOf,但是indexOf存在兼容性问题,因此最完善的写法如下

     function indexOf(arr, item) {
      if (Array.prototype.indexOf){   //判断当前浏览器是否支持
          return arr.indexOf(item);//支持,则直接使用indexOf函数进行输出
      } else {
          for (var i = 0; i < arr.length; i++){
              if (arr[i] === item){
                  return i; //不支持则进入循环,判断为真后输入
              }
          }
      }     
      return -1;//不管如何,始终返回-1
    }

     扩展

     上面所述数组中的数据类型比较单一,为了支持更多的数据类型我们可以改造一下

    function indexOf(arr,item) {
      if(!arr||!arr.length){
        return -1;
      }
      //使用let避免遍历提升
      //基于数组长度一个变量存储,避免每次重复查询长度,提升性能
      let i =0,len = arr.length;
      for (; i < len; i++) {
        // 支持 arr[i] 为对象,数组等
        if (JSON.stringify(arr[i]) === JSON.stringify(item)) {
            return i
        }
      }
      return -1;
    }

     接下来还是可以继续优化的,不过这些优化就是关于js版本上的一些语法优化了,其他方面的优化以俺目前的水平来说尚未察觉

  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/ncellit/p/10150374.html
Copyright © 2011-2022 走看看