2017-07-06 119 views
-1

我有一個對象數組,我需要從中找到一個特定的索引,然後從數組中刪除相應的對象。爲什麼Internet Explorer 11對象不支持屬性或方法'findIndex'

我用findIndex()方法:

var index = data.findIndex(x => x.OBJECTID == objectID); 
data.splice(index, 1); 

這工作正常,在Chrome,但在IE 11,它拋出

對象不支持屬性或方法 'findIndex'

我解決了這個通過使用這個解決方案從這個stackoverflow答案:findIndex() method issue with internet explorer

在檢查控制檯日誌,我注意到在Chrome和IE 11的對象的陣列之間的差:

在IE 11,控制檯日誌,對象的陣列是: enter image description here

而在鉻,它是: enter image description here

請注意,鉻中的對象是類型對象,但在IE中,它們是[object object]類型。這就是爲什麼findIndex()方法失敗?如果是這樣,爲什麼類型不同,爲什麼findIndex()在IE 11中失敗?

+3

*「爲什麼」*?因爲它是一個相對較新的ES6功能。傳統瀏覽器無法全部追溯添加新功能。這一直是瀏覽器進化多年的方式 – charlietfl

+0

[IE目前還不支持](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ findIndex)。 –

+0

嗯。對象類型是否是[object Object]的特殊原因?那部分讓我困惑。 – sikanderBabwani

回答

1

我相信你的問題不僅僅是findIndex,還有I.E.不支持lambda函數。

對於IE支持,使用for循環是不可避免的。或者您可以使用lodash版本的findIndex

var users = [ 
    { 'user': 'barney', 'active': false }, 
    { 'user': 'fred', 'active': false }, 
    { 'user': 'pebbles', 'active': true } 
]; 

_.findIndex(users, function(o) { return o.user == 'barney'; }); 
相關問題