【IE11】配列のfindメソッドを使えるようにする方法

スポンサーリンク

どうも、イソップ(@Yuhiisk)です。

IE11では、Array.prototype.findメソッドがサポートされていないためエラーになってしまいます。

しかしPolyfill(ポリフィル、代替コード)を実装することで、IE11でもエラーにならず正常動作させることが出来ます。

Polyfill実装コード

次のコードをサイトで読み込んでいる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;
  };
}

このコードを追加するだけで、IE11でもfindメソッドが利用できるようになります。

できるだけ早く読み込まれる箇所にコードを追加してください。
実際にfindメソッドを利用するコードの後に追加しても、ポリフィルは有効にならずエラーになってしまいます。