Метод filter() создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.
filter() - это метод глобального объекта Array.
Вот реализация сего метода, если Вам по какой-то причине надо знать как его написать самостоятельно(не знаю зачем Вам нужно это):
if (!Array.prototype.filter)
Array.prototype.filter = function(func, thisArg) {
'use strict';
if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
throw new TypeError();
var len = this.length >>> 0,
res = new Array(len), // preallocate array
t = this, c = 0, i = -1;
if (thisArg === undefined)
while (++i !== len)
// checks to see if the key was set
if (i in this)
if (func(t[i], i, t))
res[c++] = t[i];
else
while (++i !== len)
// checks to see if the key was set
if (i in this)
if (func.call(thisArg, t[i], i, t))
res[c++] = t[i];
res.length = c; // shrink down array to proper size
return res;
};
Vodnu, работает сей способ? Значит можно, но у Вас тут сразу несколько проблем:
дублируете код. Зачем писать одно и тоже по несколько раз? Сейчас 2 раза, а если надо будет удалить 100+n?
Что будет, если у Вас порядок поменяется в массиве?
В чем причина отказа от стандартных методов? Все равно придется их изучить или хотя бы понять. Это намного проще и быстрее, чем писать свою "велосипед"
......