IE 控制台错误:SCRIPT438:对象不支持属性或方法“来自”
Posted
技术标签:
【中文标题】IE 控制台错误:SCRIPT438:对象不支持属性或方法“来自”【英文标题】:IE Console Error: SCRIPT438: Object doesn't support property or method 'from' 【发布时间】:2021-02-13 02:31:47 【问题描述】:我的网站上有一个函数,它接收一组电子邮件字符串并删除所有重复项。但它在 ie 上不起作用,因为我使用了 Array.from 方法。如何转换为以下代码以在 ie 上工作?
let emailsListArray = ['reece@gmail.com', 'someone@gmail.com', 'another@gmail.com', 'reece@gmail.com', 'person@gmail.com', 'another@gmail.com'];
Array.prototype.unique = function()
return Array.from(new Set(this));
emailsListArray = emailsListArray.unique();
console.log(emailsListArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
【问题讨论】:
IE 有一个 ES5 JS 引擎,所以没有什么比 Set 更接近。您必须手动从数组中删除重复项。 @Teemu 我的 JS 在 php 页面的脚本标签内。我不认为你的解决方案对我有用吗? 也许我的评论有点含糊,“手动”是指something like this,而不是创建Set
,它会自动删除重复项。
developer.mozilla.org/en-US/docs/Web/javascript/Reference/…
你可以参考nafaa的回答的第一种方法。我已经测试过,它在 IE 11 中有效。原始答案使用了 IE 中不支持的箭头函数,我将其转换为 ES5 语法,然后它与 IE 11 兼容。
【参考方案1】:
Set 方法在 ie 中也没有完全支持,所以你有 2 个解决方案:
1:只需使用与所有导航器兼容的数组方法:例如,您可以使用此代码:
Array.prototype.unique = function ()
return this.reduce(function (acc, el)
return acc.indexOf(el) === -1 ? acc.concat(el) : acc;
, []);
;
2:将 polyfill 文件添加到项目中,您可以在此处找到 array.from polyfill 的示例: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
【讨论】:
以上是关于IE 控制台错误:SCRIPT438:对象不支持属性或方法“来自”的主要内容,如果未能解决你的问题,请参考以下文章
javascript 报Script438:对象不支持deleteAjax属性或方法
IE11 JavaScript(错误:SCRIPT445)“对象不支持此操作”
JavaScript endsWith在IEv10中不起作用?