JavaScript: filter() für Objekte

ECMAScript 5 hat die filter() Prototyp für Array Typen, aber nicht Object Typen, wenn ich das richtig verstehe.

Wie würde ich das umsetzen, eine filter() für Objects in JavaScript?

Sagen wir, ich habe dieses Objekt:

var foo = {
    bar: "Yes"
};

Und ich will schreiben ein filter() arbeiten Objects:

Object.prototype.filter = function(predicate) {
    var result = {};

    for (key in this) {
        if (this.hasOwnProperty(key) && !predicate(this[key])) {
            result[key] = this[key];
        }
    }

    return result;
};

Funktioniert das wenn ich es in die folgende demo, aber wenn ich es auf meiner Website mit jQuery 1.5 und jQuery-UI-1.8.9, bekomme ich den JavaScript Fehler in FireBug.

JS:

Object.prototype.filter = function(predicate) {
  var result = {};
  for (key in this) {
    if (this.hasOwnProperty(key) && !predicate(this[key])) {
      console.log("copying");
      result[key] = this[key];
    }
  }
  return result;
};

var foo = {
  bar: "Yes",
  moo: undefined
};

foo = foo.filter(function(property) {
  return typeof property === "undefined";
});

document.getElementById('disp').innerHTML = JSON.stringify(foo, undefined, '  ');
console.log(foo);

CSS:

#disp {
  white-space: pre;
  font-family: monospace
}

HTML:

<div id="disp"></div>

  • Welche Fehler haben Sie speziell?
  • Welche Fehler sind Sie immer? Posten Sie, wenn möglich 🙂
  • Es ist eine etwas zweideutige Geschichte wrt jQuery und Skripte erweitern Object.prototype: bugs.jquery.com/ticket/2721
Schreibe einen Kommentar