JavaScript: filter() for Objects

24 浏览
0 Comments

JavaScript: filter() for Objects

ECMAScript 5为Array类型提供了filter()原型方法,但对于Object类型来说没有这个方法,如果我理解得正确的话。

在JavaScript中,我应该如何实现一个用于Object的filter()方法?

假设我有这个对象:

var foo = {

bar: "Yes"

};

我想要编写一个可以用于Object的filter()方法:

Object.prototype.filter = function(predicate) {

var result = {};

for (key in this) {

if (this.hasOwnProperty(key) && !predicate(this[key])) {

result[key] = this[key];

}

}

return result;

};

当我在下面的示例中使用它时,它可以正常工作,但是当我将它添加到使用jQuery 1.5和jQuery UI 1.8.9的网站时,我在FireBug中遇到了JavaScript错误。

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);

#disp {

white-space: pre;

font-family: monospace

}

0