2017-11-27 5 views
-1

私はangular2の初心者です。私は私のangular2 project.Butの機能で "含む"メソッドは、インターネットエクスプローラでは動作しないメソッドを "含む"を使用します。"includes" angle2プロジェクトでインターネットエクスプローラで機能が動作しない

public filterByTags(event: any) { 
    this.**selectedTags**.push(event); 
    console.log(this.selectedTags) 
    this.data = this.**originalData**.filter(
     item => { 
      return this.selectedTags.every(tag => { 
       if (item.tags.length == 0) { 
        return false; 
       } else { 
        return item.tags.includes(tag.id) 
       } 
      }); 
     } 
    ); 
} 

SelectedTagsとoriginalDataはどちらも配列です。私はチェックする必要があります選択されたタグは、originalDat配列の値ですか? "includes"を使用せずに "indexOf"を使用してこれら2つの配列を比較する方法

+0

あなたは '輸入の中核-JS/ES6 /配列」を試してみました持っています。 'core-js/es7/array'をインポートしますか? – yurzui

+0

https://github.com/angular/angular-cli/issues/4128#issuecomment-274053739 – yurzui

+0

いいえ、私は試していませんでした。 – janu

答えて

0

これはAngularとは関係ありません。

includesは、standard method on Array objects in JavaScriptであり、ES2016で導入されたため、Internet Explorerでサポートするには新しくなりました。

MDNが日付ブラウザの外でのサポートを追加するためにpolyfillを展示:

// https://tc39.github.io/ecma262/#sec-array.prototype.includes 
if (!Array.prototype.includes) { 
    Object.defineProperty(Array.prototype, 'includes', { 
    value: function(searchElement, fromIndex) { 

     if (this == null) { 
     throw new TypeError('"this" is null or not defined'); 
     } 

     // 1. Let O be ? ToObject(this value). 
     var o = Object(this); 

     // 2. Let len be ? ToLength(? Get(O, "length")). 
     var len = o.length >>> 0; 

     // 3. If len is 0, return false. 
     if (len === 0) { 
     return false; 
     } 

     // 4. Let n be ? ToInteger(fromIndex). 
     // (If fromIndex is undefined, this step produces the value 0.) 
     var n = fromIndex | 0; 

     // 5. If n ≥ 0, then 
     // a. Let k be n. 
     // 6. Else n < 0, 
     // a. Let k be len + n. 
     // b. If k < 0, let k be 0. 
     var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); 

     function sameValueZero(x, y) { 
     return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y)); 
     } 

     // 7. Repeat, while k < len 
     while (k < len) { 
     // a. Let elementK be the result of ? Get(O, ! ToString(k)). 
     // b. If SameValueZero(searchElement, elementK) is true, return true. 
     if (sameValueZero(o[k], searchElement)) { 
      return true; 
     } 
     // c. Increase k by 1. 
     k++; 
     } 

     // 8. Return false 
     return false; 
    } 
    }); 
} 
関連する問題