2014-01-14 54 views
-1

什麼是通用索引使用本地函數(可用時),需要使用數組和值進行匹配的通用索引?Array.indexOf Shim沒有原型

+1

可以修改從MDN的填充工具:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Polyfill –

+0

@FelixKling ^沒有原型 –

+0

^*」您可以**修改**填充[...]「* –

回答

0
indexOf = (function() { 
    if(typeof Array.prototype.indexOf === "function") { 
     return function(haystack, needle, fromIndex){ 
      return haystack.indexOf(needle, fromIndex); 
     }; 
    } 
    return function(haystack, needle, fromIndex) { 
     var l = haystack.length, 
      i = (typeof fromIndex === "undefined" ? 0 : (fromIndex < 0 ? l + fromIndex : fromIndex)), 
      index = -1; 
     for(i; i < l; ++i) { 
      if(haystack[i] === needle) { 
       index = i; 
       break; 
      } 
     } 
     return index; 
    }; 
})(); 

用途:

indexOf(["apples", "oranges", "bananas"], "apples"); 
//returns 0 

indexOf(["oranges", "apples", "bananas"], "apples", 1); 
//returns 1 

返回-1如果沒有找到。

+0

您錯過了'fromIndex'參數:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/磁盤陣列/#的indexOf參數。 –

+0

@FelixKling良好的捕獲,加入 –

+0

你仍然沒有正確處理負面索引:*「如果提供的索引值是負數,它被視爲從數組末尾的偏移」* –