Kuroki Kaze Kuroki Kaze - 1 year ago 110
Javascript Question

No Array.filter() in Rhino?

Why can't I use

in Rhino?

The code is like this:

var simple_reason = ["a", "b", "c"];
print(typeof simple_reason.filter);

var not_so_simple_reason = new Array("a", "b", "c");
print(typeof not_so_simple_reason.filter);

Both cases output "undefined".

Answer Source

There is no standardized filter function for Javascript Arrays, it is only an extension to the standard. (There is as of the ES5 spec published just a month after this answer was posted.) The MDC reference page gives you an compatibility sample to use for those implementations that do not support it...

if (!Array.prototype.filter)
  Array.prototype.filter = function(fun /*, thisp*/)
    var len = this.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

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

    return res;
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download