JavaScript——數組的indexOf()方法在IE8中的兼容性問題


昨天在工作中遇到一個問題:數組的indexOf()方法在IE8中無效。

如以下代碼在IE8中報錯“對象不支持“indexOf”屬性或方法”:

var arr = [1,2,3];

var index = arr.indexOf(3);

 

解決方法1:在調用的indexOf方法前加上toString()將數組轉換為字符串,再調用indexOf(),但是這時又發現3的index並不是我們預期的2,而是4,因為轉換為字符串之后是"1,2,3",在查index的時候把逗號也算進去的了,顯然這也不是我們想要的結果。只是說在判斷一個對象a是否包含在某個數組arr中的時候,可以用arr.toString().indexOf(a)!=-1來判斷,但是若是要查找a對象在數組arr中的准確index的時候,這種方法就不行了。

 

 

解決方法2:使用Jquery框架的$.inArray(查找對象,查找數組)。

使用此方法就能夠獲取對象在數組中的准確index,但是一定要注意數據類型,在調用這個方法的時候,Jquery不會去自動轉換類型,查找對象 和 查找數組中的數據對象都需要是相同的類型才行,不然查到的結果就是-1

以上方法1是同事給我想的辦法,因為當時的需求就只是判斷對象是否在數組中,就使用了他介紹的方法1;方法2就是我上網查到的,建議用方法2。當然,indexOf對於數組來說,在IE9及以上、webkit內核的瀏覽器都是可以使用的,如果要兼容IE8,就需要使用到以上介紹的解決方法了。


免責聲明!

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



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