Вход

Просмотр полной версии : Filter/array в браузере ИЕ8


svs_js
17.09.2012, 14:52
var aList = [1, 3, "some string", true, "string two", null, false];
var res = aList.filter(function (value) {
if (value && value.constructor == String)
return true;
});


Выполнение данного кода приводит к ошибке в ИЕ8.
SCRIPT438: Object doesn't support property or method 'filter'

Не могу понять, в чем причина.

devote
17.09.2012, 16:17
Не могу понять, в чем причина.
добавьте код:
if (!Array.prototype.filter)
{
Array.prototype.filter = function(fun /*, thisp */)
{
"use strict";

if (this == null)
throw new TypeError();

var t = Object(this);
var len = t.length >>> 0;
if (typeof fun != "function")
throw new TypeError();

var res = [];
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in t)
{
var val = t[i]; // in case fun mutates this
if (fun.call(thisp, val, i, t))
res.push(val);
}
}

return res;
};
}