2013-02-05 142 views
0

當調用我的函數checkIss()時,issFullArray.indexOf(issToCheck)始終返回undefined。我運行了一個.length,輸出issFullArray的內容,我無法弄清楚它爲什麼不能正常工作 - 該陣列對我來說看起來很好。正如你可以看到下面,我已經試過明確設置issArray作爲數組和複製的數組由我getIssList()JavaScript數組indexOf返回undefined

function updateIss() { 
    var issArray = []; 

    var currService = current.u_business_service; 
    var currIss = current.u_is_service; 
    issArray = getIssList(currService).slice(); //getIssList() returns an arry 
    if (checkIss(issArray, currIss) === false) { 
     //do stuff 
    } 
} 

function checkIss(issFullArray, issToCheck) { 
    if (issFullArray.indexOf(issToCheck) < 0) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+3

您是否正在使用支持array.indexOf的瀏覽器。 – adeneo

+1

例如,IE <= 8不支持數組的「indexOf()」。 –

+0

我試過IE9,Firefox 15和Chrome 24.實際上是否有瀏覽器不支持indexOf()?有點傻,如果你問我... – user2042970

回答

2

簡單的方法就是遍歷數組返回,並比較各值,並返回true,如果有匹配否則返回false。沒有更多的代碼,適用於所有瀏覽器。

function checkIss(issFullArray, issToCheck) { 
    for(i=0; i<issFullArray.length; i++) { 
     if(issFullArray[i]==issToCheck) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

感謝ElPedro,它看起來我會用這個! – user2042970