2016-04-28 14 views
3

どのように私はfindメソッドを置き換えることができます。間違って使用されます。 IEではvarメールが表示されません。文字列の検索方法を変更するにはどうすればよいですか?

var mail = textObj.products.find(function (itm) { return itm.name == c }).mail 
+0

どのバージョンのIEですか? – Tushar

+0

@Tusharのバージョンは関係ありません:すべてのIEバージョンで 'find'は利用できません。 – Jordumus

+0

@ JordumusどのIEバージョンでサポートしているのですか? – Tushar

答えて

1

これはexperimental technologyです。すべてのブラウザでサポートされているわけではありません。あなたは代わりにfilterを使用する必要があります。

textObj.products.filter(function (itm) { return itm.name == c })[0].mail 
+1

重要な点:IE 8以降では 'filter'は利用できません。 – Jordumus

+0

@Jordumusうん、あなたは正しい – smnbbrv

2

Array.prototype.find()はまだIEとOpera(source)ではサポートされていません。

あなたがそれを使用したい場合、あなたはそれのためにポリフィルの関数を挿入する必要があります

また
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; 
    }; 
} 

、あなたは(最大)IE9で提供されている、Array.prototype.filter()functionを使用することができます。

関連する問題