どうも、イソップ(@Yuhiisk)です。
IE11では、Array.prototype.find
メソッドがサポートされていないためエラーになってしまいます。
しかしPolyfill(ポリフィル、代替コード)を実装することで、IE11でもエラーにならず正常動作させることが出来ます。
Polyfill実装コード
次のコードをサイトで読み込んでいるJSファイルに追加しましょう。
[js]
if (!Array.prototype.find) {
Array.prototype.find = function(predicate) {
if (this === null) {
throw new TypeError(‘Array.prototype.find called on null or undefined’);
}
if (typeof predicate !== ‘function’) {
throw new TypeError(‘predicate must be a function’);
}
var list = Object(this);
var length = list.length >>> 0;
var thisArg = arguments[1];
var value;
for (var i = 0; i < length; i++) {
value = list[i];
if (predicate.call(thisArg, value, i, list)) {
return value;
}
}
return undefined;
};
}
[/js]
このコードを追加するだけで、IE11でもfindメソッドが利用できるようになります。
できるだけ早く読み込まれる箇所にコードを追加してください。
実際にfindメソッドを利用するコードの後に追加しても、ポリフィルは有効にならずエラーになってしまいます。
[aside type="border"]参考サイト
Array.prototype.find() – JavaScript | MDN[/aside]