Mengapa Javascript saya rusak di IE8?

Kode berikut rusak di 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
}

Saya mendapat pesan kesalahan: Pesan: Objek tidak mendukung properti atau metode ini

http://jsfiddle.net/w8fm2bf1/

Kenapa ini?


person michaelmcgurk    schedule 27.04.2015    source sumber


Jawaban (2)


Versi IE sebelum IE9 tidak mendukung .indexOf( ) berfungsi untuk Array

Sebagai alternatif, Anda dapat menggunakan jQuery.inArray(). Sesuatu seperti ini:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(val) {
        return jQuery.inArray(val, this);
    };
}
person Rahul Tripathi    schedule 27.04.2015
comment
Terima kasih banyak telah meluangkan waktu untuk membaca dan menjawab. Bisakah Anda mengonfirmasi, saya harus menggunakan sesuatu seperti ini if(features.inArray(value) == -1){ features.push(value) }? - person michaelmcgurk; 27.04.2015
comment
@michaelmcgurk: - Cobalah! - person Rahul Tripathi; 27.04.2015
comment
Sempurna. Terima kasih, @Rahul! :-D - person michaelmcgurk; 27.04.2015

Array.prototype.indexOf tidak didukung di IE hingga versi 9. (sumber).

Anda harus melakukan patch monyet (ada contohnya di halaman MDN yang ditautkan di atas) atau menggunakan alternatif.

person Quentin    schedule 27.04.2015
comment
OP, perhatikan bahwa ada polyfill di bagian bawah halaman yang dapat Anda gunakan untuk browser yang tidak patuh. - person Andy; 27.04.2015