我有一个对象数组,我需要从中找到一个特定的索引,然后从数组中删除相应的对象。
我使用了findIndex()
方法:
var index = data.findIndex(x => x.OBJECTID == objectID);
data.splice(index, 1);
这在Chrome中运行良好,但在IE 11中,它会抛出
object不支持属性或方法'findIndex'
我通过使用此stackoverflow回答中的解决方案解决了这个问题:findIndex() method issue with internet explorer
在检查控制台日志时,我注意到Chrome和IE 11中的对象数组之间存在差异:
在IE 11中,控制台日志,对象数组是: enter image description here
在Chrome中,它是: enter image description here
请注意,Chrome中的对象属于object类型,但在IE中,它们的类型为[object object]。这就是findIndex()方法失败的原因吗?如果是这样,为什么类型不同,如果不是,为什么findIndex()在IE 11中失败?
答案 0 :(得分: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'; });
答案 1 :(得分:0)
如果对项目使用编译,则可以考虑安装polyfill软件包
npm i --save core-js
或
yarn add core-js
然后添加到项目入口点的顶部
import 'core-js'
目前core-js polyfill library是提供跨浏览器支持的最简单方法