首页 > web前端 > js教程 > 如何为 JavaScript 对象实现'filter()”方法?

如何为 JavaScript 对象实现'filter()”方法?

Linda Hamilton
发布: 2024-11-20 03:26:01
原创
712 人浏览过

How can you implement a `filter()` method for JavaScript objects?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板