如果我理解正确,ECMAScript 5有类型的filter()
原型Array
,但不是Object
类型.
我如何在JavaScript中实现filter()
for Object
?
假设我有这个对象:
var foo = {
bar: "Yes"
};
Run Code Online (Sandbox Code Playgroud)
我想写一个filter()
适用于Object
s的:
Object.prototype.filter = function(predicate) {
var result = {};
for (key in this) {
if (this.hasOwnProperty(key) && !predicate(this[key])) {
result[key] = this[key];
}
}
return result;
};
Run Code Online (Sandbox Code Playgroud)
这在我在下面的演示中使用时有效,但是当我将它添加到使用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];
}
} …
Run Code Online (Sandbox Code Playgroud)