Почему мой Javascript не работает в IE8?

Следующий код ломается в IE8:

getTypes: function (filter) {
    features = []
    _.each(this.collection.models, function (item) {
        _.each(item.get(filter), function (value) {
            if(features.indexOf(value) == -1){ //// error happens here
                features.push(value)
            }
        })
    })
    return features
}

Я получаю сообщение об ошибке: Сообщение: объект не поддерживает это свойство или метод

http://jsfiddle.net/w8fm2bf1/

Почему это?


person michaelmcgurk    schedule 27.04.2015    source источник


Ответы (2)


Версии IE до IE9 не поддерживают .indexOf( ) для массива

В качестве альтернативы вы можете использовать jQuery.inArray(). Что-то вроде этого:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(val) {
        return jQuery.inArray(val, this);
    };
}
person Rahul Tripathi    schedule 27.04.2015
comment
Большое спасибо, что нашли время прочитать и ответить. Не могли бы вы подтвердить, я должен использовать что-то вроде этого if(features.inArray(value) == -1){ features.push(value) }? - person michaelmcgurk; 27.04.2015
comment
@michaelmcgurk: - Попробуйте! - person Rahul Tripathi; 27.04.2015
comment
Идеально. Спасибо, @Рахул! :-Д - person michaelmcgurk; 27.04.2015