JavaScript:为对象实现filter()
JavaScript为Array类型提供了filter()原型,但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 访问网站可能会触发 JavaScript
替代解决方案:
不要修改对象原型,请考虑这些独立或实用函数:
1。使用reduce和Object.keys:
Object.filter = (obj, predicate) => Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => (res[key] = obj[key], res), {});
2.使用映射和展开语法:
Object.filter = (obj, predicate) => Object.entries(obj) .filter(([key, value]) => predicate(value)) .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
3.使用 Object.entries 和 Object.fromEntries:
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj).filter(([key, value]) => predicate(value)) );
用法示例:
var scores = { John: 2, Sarah: 3, Janet: 1 }; var filtered = Object.filter(scores, score => score > 1); console.log(filtered);
这些替代解决方案提供了一种更干净、更易于维护的方式过滤对象属性,同时保留原始对象。
以上是如何为 JavaScript 对象实现'filter()”方法?的详细内容。更多信息请关注PHP中文网其他相关文章!