[UPDATE] Array.filter

Posted by & filed under javascript.

Hab‘ mich noch zu einer kleinen Verbesserung verleiten lassen…

Object.extend(Array.prototype, {
    filter : function(){
        var args = $A(arguments), fnc = args.shift(), tmpNew = new Array();
        if(typeof(fnc)!='function'){throw new TypeError()};
        this.each(function(element){
            args.unshift(element);
            if (fnc.apply(this,args)) {
                tmpNew.push(element)
            }
            args.shift();
        });
        return tmpNew;
    }
});

Damit sind jetzt u.a. weitere Paramater für die Testfunktion zulässig:

[1,2,3,4,5,6,7,8].filter(function(element,a,b){return element > a && element < b;},3,6);
// => [4, 5]
[1,2,3,4,5,6,7,8].filter(function(element){return element > 6;});
// => [7,8]
[1,2,3,4,5,6,7,8].filter(1,3,6);
// => TypeError
['aa',1,9,{},[],'bb'].filter(function(e,a){return typeof(e)==a},'number').filter(function(e,a){return e > a},8)
// => [9]

Leave a Reply