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版本上的一些語法優化了,其他方面的優化以俺目前的水平來說尚未察覺


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM