2016-04-28 49 views
3

我該如何替換查找方法。它使用不正確。 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或更低版本中不可用。 – 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; 
    }; 
} 

或者,你可以使用Array.prototype.filter()function,這是可以在IE9(及以上)。