array.some()方法的替代方案?

时间:2015-05-22 17:33:50

标签: javascript jquery internet-explorer-8

是否有使用array.some()的替代方法? 我已经在我的代码中使用了一段时间,但我刚刚得知IE8不支持它。

我的原始代码:

var list = ['Johny', 'Adam', 'Johny'];
var option = 'Johny';

var foundInList = list.some(function (el) {
    return el === option;
});

我可以用以下内容替换它:

var test = false;
for (i = 0; i < list.length; i++){
    if (list[i] === option){
        test = true;
        break;
    }
}

但是可能有更好的方法来做同样的事情。

请帮忙。 在此先感谢

PS:这是fiddle

2 个答案:

答案 0 :(得分:1)

您可以添加自己的方法

if (!Array.prototype.some)
{
    Array.prototype.some = function (func)
    {
        for (var i in this)
        {
           if (func(i)) return true;
        }
        return false;
    };
}

答案 1 :(得分:1)

我认为这里最好的解决方案只是对条目进行循环定制。 IE8中不支持大多数阵列变异方法。我建议不要使用polyfilling来替换该函数,因为您的polyfill可能无法有效地替换现代浏览器中的函数。